Google bigquery 如何在Google BigQuery SQL中检查多个模式?(LIKE+IN)

Google bigquery 如何在Google BigQuery SQL中检查多个模式?(LIKE+IN),google-bigquery,sql-like,Google Bigquery,Sql Like,因此,我必须在一个BigQuery表中搜索一组名称,我定期在另一个数据集中收集这些名称。此时数据集太大,包含近60k个名称,我再也做不到了 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}

因此,我必须在一个BigQuery表中搜索一组名称,我定期在另一个数据集中收集这些名称。此时数据集太大,包含近60k个名称,我再也做不到了

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。非常感谢您在这方面提供的任何帮助。

您应该将这些名称保存在另一个表中,然后加入该表:

挑选* 从base.table t1开始 如果存在,请从其他表t2中选择1 其中t1.name像CONCAT“%”,t2.name“%”;
然后,base.table中的任何记录只有在包含来自另一个表的某些子字符串名称时才会匹配。

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

挑选* 从base.table t1开始 如果存在,请从其他表t2中选择1 其中t1.name像CONCAT“%”,t2.name“%”;
那么,base.table中的任何记录只有在包含来自另一个表的某些子字符串名称时才会匹配。

嘿,它通过了查询检查,但在运行时抛出错误:标量子查询生成了多个子字符串element@Hamza使用exists逻辑尝试更新的版本。更新的逻辑进一步引发错误:如果没有连接两边的场相等的条件。我被难住了。我将把这个答案留给别人,直到别人能给你一个有效的解决方案。BigQuery充满了怪癖。嘿,它通过了对查询的检查,但在运行时抛出了错误:标量子查询产生了不止一个element@Hamza使用exists逻辑尝试更新的版本。更新的逻辑进一步引发错误:如果没有连接两侧字段相等的条件,则无法使用左半连接。我很抱歉难倒了。我将把这个答案留给别人,直到别人能给你一个有效的解决方案。BigQuery充满了怪癖。