比较sql中的两个字段,看看是否有共同的值

hec6srdp  于 2021-07-27  发布在  Java
关注(0)|答案(2)|浏览(403)

这是我的第一篇文章,希望你们这些伟大的人能够帮助我。
我有一个包含两列人名的数据表。名称由管道分隔。我想确定在这两个列中是否有共同的名称,每行都附加了一个true/false/unknown输出字段。如果一个字段为空,则结果为“未知”。
我正在寻找一个输出,如附件的基础上的两个输入列。

在tsql中可以这样做吗(我们在azure上运行sql数据库)?非常感谢您的帮助。谢谢。

gzszwxb4

gzszwxb41#

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

也就是说,您的第一项工作应该是修复数据模型。在表列中存储带分隔符的列表基本上不符合关系数据库的目的,因此应始终避免。每个值应显示在单独的行中。

amrnrhlw

amrnrhlw2#

使用 split() 功能,我推荐 apply :

select t.*,
       (case when names_in_common > 0 then 'true'
             when field1 is null or field2 is null then 'unknown'
             else 'false'
        end) as flag
from t outer apply
     (select count(*) as names_in_common
      from string_split(field1, '|') s1 join
           string_split(field2, '|') s2
           on s1.value = s2.value
     ) n

相关问题