SQL Server-查找子查询中返回的字符串是否包含另一个字符串

时间:2018-10-31 20:43:36

标签: sql-server sql-server-2008

我有两个桌子。每个ID都有一个单独的行。另一个包含一个字符串,其中包含以逗号分隔的ID列表。我试图找出第一张表中的ID是否出现在第二张表中逗号分隔的ID字符串内的任何地方。

这是一个示例(无效)查询:

select * from 
(select 'b' as ID) table1
where table1.ID in 
(select 'a,b,c' as CSV_LIST) 

IN的工作原理当然不是这样,但是我不知道该怎么做。

我已经考虑过使用STRING_SPLIT(),但在此版本的SQL Server中不起作用。我也考虑过使用CONTAINS(),但似乎也无法使其正常工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果无法修复设计,则可以使用LIKEJeff Moden's之类的自定义字符串分隔符。

select table1.*
from table1
inner join table2
on table2.csv like '%' + table1.b + '%'

请注意,由于前导%这是不可行的,因此正如Sean指出的那样,固定设计是最好的,然后是另一个不使用WHILE循环的split函数。