mssql比较where子句

时间:2015-08-04 11:53:15

标签: sql-server sql-server-2008 where-clause string-comparison multiple-value

我想比较两个多值字符串,以查看另一个字符串中是否存在其中一个值。

我有一个带有管道分隔值的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

1 个答案:

答案 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)