Sql 检查列值是否包含在另一列中
我在SQL中有一个名为Host的表,如下所示Sql 检查列值是否包含在另一列中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在SQL中有一个名为Host的表,如下所示 **FirstName** **LastName** Krishna Krishna Murthy Jithendra Jithendra Reddy Varun Varun Kumar Mahendra Varma 如果firstname列是LastName列的一部分,我需要再创建一个值为yes/No的列。 输出应如下所示 **FirstName** **Las
**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
有什么想法吗?你可以像这样使用
。在标准SQL中,这看起来像:
select h.*,
(case when h.lastname like concat('%', h.firstname, '%')
then 'yes' else 'no'
end) as flag
from host h;
请注意,大多数数据库都支持字符串串联运算符,例如|
或+
将列添加到表中。使用下面的UPDATE
语句填写现有记录,不区分大小写
UPDATE host
SET subset = CASE WHEN instr(lower(surname), lower(forename)) > 0 THEN 'Yes' ELSE 'No' END
/
你可以用
SELECT FirstName, LastName,
CASE WHEN LastName LIKE '%' + FirstName + '%'
THEN 'Yes' ELSE 'No'
END AS Flag
FROM host
为了得到你想要的结果
如果您只想搜索名称重复的情况,可能需要将大小写调整为LastName LIKE FirstName+'%'
,以确保它只匹配至少有两个单词的情况,并且第一个单词在FirstName中,例如
**FirstName** **LastName** **Subset**
Bob Bobbins No
SingleName SingleName No
AAA BBB AAA No
我删除了无关的数据库标签。请随意标记您实际使用的数据库。我收到一个错误,好像Concat不是内置函数。我正在使用sql2008@krishna . . . 然后应该使用适当的方法在数据库中进行连接。当我回答这个问题时,它没有数据库标签。非常感谢你……理查德。