sql - sql - 在表中,为特定列提供'like'函数的值?

我使用SQL Server 2014,我需要一个T-SQL查询,使用like函数在表(t1 )的特定列(c1 )上查找其中的一个表。

表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)



时间:

你似乎在找JOIN :


SELECT ID 


FROM t1


INNER JOIN t2 ON t1.Notes LIKE '%' + t2.Code + '%'




SELECT ID


FROM t1


WHERE EXISTS (


 SELECT 1 FROM t2 WHERE t1.Notes LIKE '%' + t2.Code + '%'


)



你可以像这样使用cross applycharindex


--Loading data


create table t1 (id varchar(10));


insert into t1 (id) values ('100100'),('200100'),('300100')


insert into t1 (id) values ('100200'),('200200'),('300200')


insert into t1 (id) values ('100300'),('200300'),('300300')


insert into t1 (id) values ('0100'),('0200'),('0300')


insert into t1 (id) values ('00010'),('00020'),('00030')



create table t2 (id varchar(10));


insert into t2 (id) values ('020'),('010')



select t.id


from t1 as t


cross apply t2 as t2


--where charindex(t2.id,t.id) > 0 -- simulates a double % one at the beginning and one at the end


--where charindex(t2.id,t.id) = 1 -- simulates a % at the beginning


where charindex(t2.id,t.id) = len(t.id)-len(t2.id)+1 -- simulates a % at the end



唯一的问题是,假如这个表很大,这可能是一个比较慢的解决方案。

...