SQL CASE表达式中如何使用OR正确合并多个LIKE判断条件
SQL多LIKE条件合并判断实现方案
原代码语法问题说明
LIKE语法不支持在单个匹配语句后用OR拼接多个模式串,每个模糊匹配规则需要单独对应一个LIKE判断,再通过逻辑OR连接多个判断条件- 原语句中
END AS country,末尾存在多余逗号,该位置后无其他查询字段,会触发SQL语法解析错误
通用兼容写法(支持所有SQL数据库)
所有主流SQL数据库(MySQL、SQL Server、BigQuery、Hive等)都可以用该写法,逻辑完全匹配需求:
SELECT *, CASE WHEN LOWER(campaign_name) LIKE 'bra_de_%' OR LOWER(campaign_name) LIKE '%-de' OR LOWER(campaign_name) LIKE 'vid_de_%' OR LOWER(campaign_name) LIKE 'de_%' THEN 'de' ELSE '0' END AS country FROM abc
特定数据库简化写法
如果使用PostgreSQL、Redshift等支持SIMILAR TO正则匹配语法的数据库,可以将多个模式合并为单个判断,写法更简洁:
SELECT *, CASE WHEN LOWER(campaign_name) SIMILAR TO '(bra_de_%|%-de|vid_de_%|de_%)' THEN 'de' ELSE '0' END AS country FROM abc
注意:如果使用MySQL,可换用
REGEXP关键字实现类似合并匹配效果,模式写法参考对应数据库正则规则即可。
内容的提问来源于stack exchange,提问作者user18271947
相关产品推荐
相关产品推荐

