在sql中将select结果传递给like运算符

hs1rzwqc  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(380)

我在customer表中有name的结果
我想知道这个名字是否存在于日志表列中
我的日志表changedate列将记录name和id,我只想找到name

select top 100 *
from LogDataTable
where ChangeData like '%'+'select name from customer'+ '%'

但我没有得到这个查询的结果,我要做什么改变?能做到吗?

mzsu5hc0

mzsu5hc01#

你可以使用连接来比较你所要求的数据。

select top 100 L.*
from dbo.LogDataTable L
inner join dbo.Customer C on L.ChangeData like '%' + C.[Name] + '%';

不过,它的性能不会很好,因为它必须对 Customer 每行 LogDataTable .
如果您能够确保客户名称始终是 ChangeData 你可以用 like C.[Name] + '%' 然后从索引中获益。
要解决排序错误,请重新整理查询中的一列。我建议换衣服 C.[Name] 因为这已经是表扫描的主题了。但这取决于你是否需要一个“重音敏感”的比较。

select top 100 L.*
from dbo.LogDataTable L
inner join dbo.Customer C on L.ChangeData like '%' + C.[Name] collate SQL_Latin1_General_CP1_CI_AS + '%';

相关问题