You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中实现带通配符的字符串列表匹配及case when应用

BigQuery 等效SQL实现方案

你原来的写法无法运行是因为IN运算符仅支持精确等值匹配,无法识别%通配符(通配符是LIKE运算符的专属语法),该需求在BigQuery中可以正常实现,以下是两种常用写法:

方案1:使用REGEXP_CONTAINS(多匹配项时更简洁)

该方案通过正则匹配实现包含任意关键词的判断,适配你的需求场景:

  • WHERE 条件写法:
SELECT *
FROM `你的表名`
WHERE REGEXP_CONTAINS(LOWER(field1), r'foo|bar|baz')
  • CASE WHEN 子句写法:
SELECT
  *,
  CASE
    WHEN REGEXP_CONTAINS(LOWER(field1), r'foo|bar') THEN 'string1'
    ELSE 'string2'
  END AS NewField
FROM `你的表名`

注意:如果匹配关键词本身包含正则特殊字符(如.、*、|等),需要对特殊字符做转义处理。

方案2:使用LIKE搭配OR(无正则语法学习成本)

如果你更熟悉传统LIKE语法,也可以用多条件拼接实现:

  • WHERE 条件写法:
SELECT *
FROM `你的表名`
WHERE LOWER(field1) LIKE '%foo%'
   OR LOWER(field1) LIKE '%bar%'
   OR LOWER(field1) LIKE '%baz%'
  • CASE WHEN 子句写法:
SELECT
  *,
  CASE
    WHEN LOWER(field1) LIKE '%foo%' OR LOWER(field1) LIKE '%bar%' THEN 'string1'
    ELSE 'string2'
  END AS NewField
FROM `你的表名`

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:54:07