我正在使用SQL Server 2014
,我需要一个T-SQL
查询,该查询使用like
函数在表(t1)的特定列(c1)上运行,以查找其中是否包含来自在另一个表(t2)的列(c2)中找到的代码列表。
为简单起见,这是方案和预期的输出:
表t1:
ID Notes
101 (free text in this column)
102 ...
... ...
115000 ...
表t2(超过300个代码的列表):
Code
FR110419
GB150619
...
DE111219
我正在寻找:
SELECT ID
FROM t1
WHERE t1.Notes like (SELECT Code FROM t2)
由于相似的运算符需要'%'起作用,所以我对如何构造该行感到困惑。
我已经对StackOverflow
进行了一些研究,而遇到的最接近的解决方案是针对mysql
问题:how to use LIKE with column name
任何类型的帮助将非常感激。
您似乎正在寻找JOIN
:
SELECT ID
FROM t1
INNER JOIN t2 ON t1.Notes LIKE '%' + t2.Code + '%'
如果不同的Code
可能出现在相同的Note
中,则将EXISTS
条件与相关的子查询一起使用也是一种选择,因为这样可以避免在输出中重复记录:
SELECT ID
FROM t1
WHERE EXISTS (
SELECT 1 FROM t2 WHERE t1.Notes LIKE '%' + t2.Code + '%'
)