使用SQL Server检查字符串列表是否包含其他字符串列表项?

时间:2015-03-26 16:37:07

标签: sql sql-server-2008

我有两个动态列表。我想验证一个列表包含其他列表的字符串。

代表:

        list1 = 'test1, test2, test3, test4, test5'
        list2 = 'how, where, why, test2, test1'

我想验证第二个列表,list2的每个字符串是否都在list1中?我想在SQL服务器的存储过程中使用它。

您能提供解决方案吗?

1 个答案:

答案 0 :(得分:1)

您也可以尝试以下方法

   declare @l1 varchar(max),@l2 varchar(max),@result varchar(max)
set @l1 = 'test1, test2, test3, test4, test5' 
set @l2 = 'how, where, why, test2, test1'

select  'l1' as id,ltrim(t.c.value('.','varchar(max)')) as n  into #t1 from 
(select  x= cast('<t>'+replace(@l1,',','</t><t>')+'</t>' as xml)) a cross apply x.nodes('/t') t(c)

select  'l2' as id,ltrim(t.c.value('.','varchar(max)')) as n  into #t2 from 
(select  x= cast('<t>'+replace(@l2,',','</t><t>')+'</t>' as xml)) a cross apply x.nodes('/t') t(c)

select @result= (select n+',' from #t1 where n in(select n from #t2) for xml path(''))

drop table #t1, #t2
select @result