首页 > 解决方案 > 如何在 SQL Server 中对多个术语运行独占搜索?

问题描述

假设我在公司名称后面有一个公司表。

我想做一个查询,给定一个临时表或搜索词字符串的 CTE(我把那部分放在了下面),对所有这些字符串执行一个独占搜索。

例如,假设我有一个包含两条记录“Bill, Lark”的 CTE/Temp 表。

我应该只得到“Bill Lark Larry”和“Bill Lark”,因为它是唯一一个同时拥有这两个术语的人。

我不想使用 while 循环或游标。

我怎样才能做到这一点?

我听说 PostGreSQL 有一个“LIKE ANY”和一个“LIKE ALL”,如果 SQL Server 中有一些等价物,后者将是完美的。

例如:

SELECT * FROM [Company] WHERE [CompanyName] LIKE ALL (Select * FROM Search_CTE)

标签: sqlsql-server

解决方案


您可以执行以下操作:

select t1.Id
from [Company] t1 join Search_CTE t2 on t1.CompanyName like '%' + t2.SearchTerm + '%'
group by t1.Id
having count(*) = (select count(*) from Search_CTE)

推荐阅读