我想比较两个多值字符串,以查看另一个字符串中是否存在其中一个值。
我有一个带有管道分隔值的nvarchar行的表,例如
'VALUE1 |值2 |值3'
我还有一个带有逗号分隔字符串的nvarchar变量,例如
'值2,值3'
直到现在表中的列都有一个值,我使用表函数在变量中吐出字符串,并使用IN子句查看该值是否在生成的表中。 e.g。
select * from table1
WHERE column in (select val from dbo.split(@variable,','))
如果列还包含更多值,则无效。
select * from table1
WHERE (select val from dbo.split(column,'|')) in (select val from dbo.split(@variable,','))
这里它试图将2个生成的表相互比较失败。我已尝试使用连接,但无法找到正确执行此操作的方法。我正在使用MSSQL 2008R2
答案 0 :(得分:1)
也许这可以帮到你:
select * from table1 where exists
(select * from
(select val from dbo.split(table1.column,'|')) a,
(select val from dbo.split(@variable,',')) b
where a.val=b.val)