首页 > 解决方案 > 如何检查 Google BigQuery SQL 中的多个模式?(喜欢 + 输入)

问题描述

所以我必须在一个 BigQuery 表中搜索一堆名字,我会定期在另一个数据集中收集这些名字。此时数据集太大,包含近 6 万个名字,我再也做不到了

SELECT * FROM base.table WHERE name LIKE '%name1%' OR name LIKE '%name2%.....

当我使用 python 脚本尝试它时:

SELECT * FROM base.table WHERE name LIKE({' OR '.join([f'ulv4.full_name LIKE %{name}%' for name in names])})

但是对于这么多名称,查询的字符限制超过了。我尝试查看类似这样的解决方案以及同一问题的其他答案,但似乎没有答案适用于 BigQuery 标准 SQL。非常感谢这方面的任何帮助。

标签: google-bigquerysql-like

解决方案


您应该将名称保留在另一个表中,然后加入它:

SELECT *
FROM base.table t1
WHERE EXISTS (SELECT 1 FROM other.table t2
              WHERE t1.name LIKE CONCAT('%', t2.name, '%'));

然后,base.table只有当它包含来自另一个表的某些子字符串名称时,它才会匹配。


推荐阅读