SQL中List的模糊匹配



有一组重复的数据。公司名称可以写成工作场所名称,例如Amazon,也可以写成法定名称,例如Amazon.com Inc.。两个条目都有我需要的信息。

名称的问题是我正在运行一个子查询来生成要搜索的公司的正确列表,但是LIKE函数似乎只适用于集合列表。

FROM CRM.organizations 
WHERE name LIKE (SELECT org_name FROM CRM.deals WHERE UUID IS NOT NULL AND status = 'won')```
The code above returns the following error: 'Error: Scalar subquery produced more than one element'
Trying to understand if there is a function that can help, or I will need to create a list manually with: 'companyAinc';'companyBllc';....

好吧,LIKE运算符不支持直接传递列表值来匹配,您可以使用CROSS APPLY将每个值映射到语句中的模糊匹配。

您可以参考这个示例来使用多个带有LIKE操作符的子句。

另一方面,您也可以尝试使用User-defined functions/routines,其中您可以将所有返回值与LIKEOR操作符映射,并将所需查询作为字符串返回。

FROM CRM.organizationsWHERE name in (SELECT org_name FROM CRM.deals WHERE UUID不是NULL AND status = 'won');

从CRM.organizationsWHERE exists (SELECT 1 FROM CRM.deals WHERE UUID IS NOT NULL AND status = 'won' AND organizations.name like deals.org_name);

最新更新