为表中特定列的'like'函数提供值吗?

问题描述 投票:0回答:1

我正在使用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

任何类型的帮助将非常感激。

sql sql-server tsql sql-like
1个回答
1
投票

您似乎正在寻找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 + '%'
)
© www.soinside.com 2019 - 2024. All rights reserved.