如何在SQL Server中对多个词进行排他搜索?

时间:2018-12-05 22:56:24

标签: sql sql-server

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

  • 账单保险
  • 拉里保险
  • 比尔·拉克·拉里
  • 云雀保险
  • 比尔云雀

我想进行一个查询,给定一个临时表或搜索词字符串的CTE(我将这一部分放在后面),对所有这些字符串执行排他性搜索。

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

我应该只获得“比尔·拉克·拉里”和“比尔·拉克”,因为这是唯一具有这两个词的人。

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

我该怎么做?

我听说PostGreSQL有一个“ LIKE ANY”和一个“ LIKE ALL”,如果SQL Server中有类似的东西,后者将是完美的。

例如:

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

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

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)