我有两个桌子。每个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()
,但似乎也无法使其正常工作。
有什么想法吗?
答案 0 :(得分:1)
如果无法修复设计,则可以使用LIKE
或Jeff Moden's之类的自定义字符串分隔符。
select table1.*
from table1
inner join table2
on table2.csv like '%' + table1.b + '%'
请注意,由于前导%
这是不可行的,因此正如Sean指出的那样,固定设计是最好的,然后是另一个不使用WHILE
循环的split函数。