假设我有一个在公司名称后面的公司表。
我想进行一个查询,给定一个临时表或搜索词字符串的CTE(我将这一部分放在后面),对所有这些字符串执行排他性搜索。
例如,假设我有一个包含两个记录“ Bill,Lark”的CTE / Temp表。
我应该只获得“比尔·拉克·拉里”和“比尔·拉克”,因为这是唯一具有这两个词的人。
我不想使用while循环或游标。
我该怎么做?
我听说PostGreSQL有一个“ LIKE ANY”和一个“ LIKE ALL”,如果SQL Server中有类似的东西,后者将是完美的。
例如:
SELECT * FROM [Company] WHERE [CompanyName] LIKE ALL (Select * FROM Search_CTE)
答案 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)