BigQuery中如何将多个LIKE条件合并为单一行写法?
BigQuery中合并多个LIKE条件的替代方案
首先明确:BigQuery的LIKE语法不支持[AB]%这种方括号字符集匹配,它只支持%(任意长度任意字符)和_(单个任意字符)两种通配符,所以你说的方括号写法行不通。
如果不能用多个独立的LIKE语句,也不能用正则表达式,可以试试以下两种实用方案:
方案1:用STARTS_WITH结合数组+EXISTS
把所有需要匹配的前缀放到数组里,通过UNNEST展开后检查是否有匹配的前缀,整个条件是一个独立的逻辑块,不用写多个OR:
SELECT name FROM table1 WHERE EXISTS ( SELECT 1 FROM UNNEST(['ANG', 'GA']) AS prefix WHERE STARTS_WITH(name, prefix) )
方案2:用LEFT函数结合IN(适合前缀长度统一的场景)
如果所有目标前缀长度一致,比如都是2个字符,可以直接截取字符串前缀后用IN匹配:
-- 示例:前缀均为2字符的情况 SELECT name FROM table1 WHERE LEFT(name, 2) IN ('GA', 'AN')
但如果前缀长度不同(比如你的例子里一个是3字符、一个是2字符),这个方法需要拆分条件,灵活性不如方案1。
内容的提问来源于stack exchange,提问作者AnalyticsMystique
相关产品推荐
相关产品推荐

