如何简化BigQuery中使用LIKE运算符批量更新名称的SQL语句?
简化BigQuery中重复LIKE语句的方案
可以利用BigQuery的正则表达式函数REGEXP_CONTAINS来合并重复的LIKE/NOT LIKE条件,大幅简化代码:
简化后的SQL语句
UPDATE `dbo.Servcomp_Dataset.bankstatement` SET Category = "Purchases" --, Subcategory = "Adm" WHERE REGEXP_CONTAINS(Name_payee, r"shipp") AND NOT REGEXP_CONTAINS(Name_payee, r"Bank of|Mortgage|Frigelar|Delivery guarathon|Strada") AND Amount < 0 AND Category IS NULL
关键说明
REGEXP_CONTAINS(Name_payee, r"shipp")等价于Name_payee LIKE "%shipp%",正则表达式默认会匹配字符串中任意位置的目标子串,完美替代模糊匹配的需求。NOT REGEXP_CONTAINS(Name_payee, r"Bank of|Mortgage|Frigelar|Delivery guarathon|Strada")把所有需要排除的关键词用|分隔,一次性完成多个NOT LIKE的判断,避免重复编写相同格式的条件。- 原逻辑中的
Amount < 0和Category IS NULL条件保持不变,确保更新范围准确。
内容的提问来源于stack exchange,提问作者Costa Joy
相关产品推荐
相关产品推荐

