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

Azure SQL数据仓库:如何用通配符合并CASE语句多WHEN条件?

通配符匹配多单词及CASE条件合并方案

在Microsoft Azure SQL Data Warehouse中,可以将多个WHEN条件合并为单个WHEN,仅使用支持的通配符和基础函数实现原逻辑,具体如下:

合并后的SQL代码

CASE
    WHEN PhoneNumber LIKE '%[0-9]EXT[0-9]%'
        OR PhoneNumber LIKE '%[0-9]EST[0-9]%'
        OR PhoneNumber LIKE '%[0-9]XTN[0-9]%'
        OR PhoneNumber LIKE '%[0-9]XT[0-9]%'
        OR PhoneNumber LIKE '%[0-9]EX[0-9]%'
        OR PhoneNumber LIKE '%[0-9]X[0-9]%'
        OR PhoneNumber LIKE '%[0-9]E[0-9]%'
    THEN REPLACE(PhoneNumber, 
        CASE
            WHEN PhoneNumber LIKE '%[0-9]EXT[0-9]%' THEN 'EXT'
            WHEN PhoneNumber LIKE '%[0-9]EST[0-9]%' THEN 'EST'
            WHEN PhoneNumber LIKE '%[0-9]XTN[0-9]%' THEN 'XTN'
            WHEN PhoneNumber LIKE '%[0-9]XT[0-9]%' THEN 'XT'
            WHEN PhoneNumber LIKE '%[0-9]EX[0-9]%' THEN 'EX'
            WHEN PhoneNumber LIKE '%[0-9]X[0-9]%' THEN 'X'
            WHEN PhoneNumber LIKE '%[0-9]E[0-9]%' THEN 'E'
        END, 
        ' EXT ')
    ELSE PhoneNumber -- 保留原字段值(若原CASE有ELSE可替换)
END

核心逻辑说明

  • 合并WHEN条件:用OR将所有原LIKE匹配条件整合到单个WHEN中,实现一次判断覆盖所有目标场景。
  • 精准替换对应字符串:嵌套CASE语句判断当前匹配的具体子串,确保替换逻辑与原代码完全一致——不同的匹配子串统一替换为' EXT '。
  • Azure SQL DW兼容性:全程仅使用LIKE通配符(%任意字符、[]指定字符组)、REPLACE和CASE,均为Azure SQL Data Warehouse原生支持的语法,无兼容性问题。

关于通配符匹配多单词的补充

由于Azure SQL Data Warehouse的LIKE仅支持基础通配符,无法用单个LIKE模式直接匹配多个不同长度的单词,必须通过OR连接多个LIKE条件实现多单词匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:09:18