0

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

我有一个带有管道分隔值的 nvarchar 行的表,例如

“价值1|价值2|价值3”

我还有一个带有逗号分隔字符串的 nvarchar 变量,例如

'值 2,值 3'

到目前为止,表中的列只有一个值,我使用表函数将字符串吐出变量中,并使用 IN 子句查看该值是否在生成的表中。例如

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

4

1 回答 1

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)
于 2015-08-04T12:08:43.900 回答