使用like的sql比较表

时间:2018-06-04 15:59:38

标签: sql sql-server

我试图在另一个表中使用LIKE命令比较sql中的两个表。

表1

accountNumber     description
12345             wires sent out    

表2

keywords
wire
fund
fee

所以我想说,给我table1中的所有记录,table1.description是table2.keywords中的LIKE记录

这有意义吗?然后我试图反过来...给我table1中的所有记录,这些记录不像table2.keywards。

我已尝试过这一行,但它无效

left join dbo.cashkeywords cashkeyTable on cashkeyTable.keyword like xxxTable.PSDSC1

2 个答案:

答案 0 :(得分:2)

据推测,你需要通配符。在标准SQL中,这看起来像:

left join
dbo.cashkeywords cashkeyTable
on cashkeyTable.keyword like '%' || xxxTable.PSDSC1 || '%'
嗯。嗯。 。 。 shoudl可能真的:

on ?.keywordlist like '%' || ?.keyword || '%'

从你的命名中可以看出哪一个很难。您可能还想要包含分隔符。

对于排除,您需要where ?.keyword is null

字符串连接函数/运算符可能因数据库而异,因此这可能不是数据库的确切语法。

另外,将值列表存储在一列中是一个非常糟糕的主意。你应该有一个单独的表,每个关键字都有一行,而不是将所有关键字填入一列。

答案 1 :(得分:1)

Use Cross Apply:

declare @Table1 table ([accountNumber] int, [description] nvarchar(100))
insert into @Table1 values (12345, 'wires sent out')

declare @Table2 table ([keywords] nvarchar(100))
insert into @Table2 values 
('wire')
,('fund')
,('fee')

select distinct *
from @Table1 t1
cross apply @Table2 t2
where t1.description like '%' + t2.keywords + '%'

For single returns:

select distinct t1.*
from @Table1 t1
cross apply @Table2 t2
where t1.description like '%' + t2.keywords + '%'