首页 > 解决方案 > 比较SQL中的两个字段,看是否有共同的值

问题描述

这是我的第一篇文章,所以希望你们那里的好人能够帮助我。

我有一个包含两列人名的数据表。名称是用竖线分隔的。我想确定这两列中是否有任何共同的名称,每行附加一个 True/False/Unknown 输出字段。如果一个字段为空白,则结果为“未知”。

我正在寻找基于两个输入列附加的输出。

名称和结果示例

这可以在 TSQL 中实现吗(我们在 Azure 上运行 SQL 数据库)?任何帮助深表感谢。谢谢。

标签: sqltsql

解决方案


如果您运行的是 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

也就是说,您应该首先努力修复您的数据模型。在表列中存储分隔列表基本上违背了关系数据库的目的,应始终避免。每个值应出现在单独的行上。


推荐阅读