sql - 如何在 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)
解决方案
您可以执行以下操作:
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)
推荐阅读
- excel - 通过更改文件名的 VBA 复制粘贴
- coq - Coq 只简化/展开一次。(用函数的一次迭代的结果替换部分目标。)
- php - 应用程序 Azure Api 中的 NoPermissionsInAccessToken 以创建联系人
- wordpress - Wordpress wp_login 挂钩未按预期工作
- c# - Facebook 身份验证被禁止
- qliksense - 在哪里为本地 Qlik Core 实例添加许可证信息
- excel - VSTO COM 加载项中的多个范围选择失败,但在 VBA 中完美运行,这里有什么问题?
- php - 为 PHP 7 在 xampp windows 8 上安装 Curl
- r - 可以连接到R中原始字符串的所有子字符串组合
- intellij-idea - IntelliJ IDEA 中的 PsiLambdaExpression