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

SQL中CASE表达式如何识别字段中同时存在TL和ADR的情况

解决SQL CASE表达式匹配多个关键词的问题

你的CASE语句存在两个核心问题:

  • CASE表达式是按顺序匹配执行的,只要前面的条件满足就会直接返回结果,所以同时包含TL和ADR的字段会被第一个LIKE '%TL%'拦截,永远走不到后续判断
  • IN ('%ADR%,%TL%')写法错误,IN用于匹配精确值,无法搭配通配符实现模糊查询

修改后的正确语句如下:

CASE
    -- 优先判断同时包含两个关键词的情况
    WHEN CustRef3 LIKE '%TL%' AND CustRef3 LIKE '%ADR%' THEN 'TL,ADR'
    -- 再处理仅含TL的情况
    WHEN CustRef3 LIKE '%TL%' THEN 'TL'
    -- 最后处理仅含ADR的情况
    WHEN CustRef3 LIKE '%ADR%' THEN 'ADR'
    -- 可选:如果需要处理既不含TL也不含ADR的场景,添加ELSE分支
    -- ELSE '无匹配属性'
END AS "Attributes2"

逻辑说明

把最特殊的场景(同时包含两个关键词)放在判断顺序的最前面,避免被单一关键词的条件提前拦截;之后依次处理单一匹配的情况,就能得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:37:25