我在SQL中有一个名为Host的表,如下所示。
**FirstName** **LastName**
Krishna Krishna Murthy
Jithendra Jithendra Reddy
Varun Varun Kumar
Mahendra Varma
如果firstname列是LastName列的一部分,我需要再创建一个值为yes / No的列。 输出应如下
**FirstName** **LastName** **Subset**
Krishna Krishna Murthy Yes
Jithendra Jithendra Reddy Yes
Varun Varun Kumar Yes
Mahendra Varma No
任何想法?
答案 0 :(得分:1)
您可以使用
SELECT FirstName, LastName,
CASE WHEN LastName LIKE '%' + FirstName + '%'
THEN 'Yes' ELSE 'No'
END AS Flag
FROM host
获得您正在寻找的结果。
如果您只想搜索重复使用forename的情况,您可能需要将大小写调整为LastName LIKE FirstName + ' %'
以确保它仅匹配至少有两个单词的位置,并且第一个位于FirstName中,例如
**FirstName** **LastName** **Subset**
Bob Bobbins No
SingleName SingleName No
AAA BBB AAA No
答案 1 :(得分:0)
您可以使用like
。在标准SQL中,这看起来像:
select h.*,
(case when h.lastname like concat('%', h.firstname, '%')
then 'yes' else 'no'
end) as flag
from host h;
请注意,大多数数据库都支持字符串连接的运算符,例如||
或+
。
答案 2 :(得分:0)
在表格中添加列。使用下面的UPDATE
语句填写现有记录,不区分大小写。
UPDATE host
SET subset = CASE WHEN instr(lower(surname), lower(forename)) > 0 THEN 'Yes' ELSE 'No' END
/