sql - 比较SQL中的两个字段,看是否有共同的值
问题描述
这是我的第一篇文章,所以希望你们那里的好人能够帮助我。
我有一个包含两列人名的数据表。名称是用竖线分隔的。我想确定这两列中是否有任何共同的名称,每行附加一个 True/False/Unknown 输出字段。如果一个字段为空白,则结果为“未知”。
我正在寻找基于两个输入列附加的输出。
这可以在 TSQL 中实现吗(我们在 Azure 上运行 SQL 数据库)?任何帮助深表感谢。谢谢。
解决方案
如果您运行的是 SQL Server 2016 或更高版本,则一个选项使用string_split()
:
select
field1,
field2
case
when field1 is null or field2 is null
then 'Unknown'
when exists (select 1 from string_split(field1, '|') where field2 like '%' + value + '%' )
then 'True'
else 'False'
end as result
from mytable
也就是说,您应该首先努力修复您的数据模型。在表列中存储分隔列表基本上违背了关系数据库的目的,应始终避免。每个值应出现在单独的行上。