我试图在另一个表中使用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
答案 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 + '%'