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

修正SQL查询:匹配1P[01-99]Kxxx格式Area并汇总Quantity

解决SQL匹配特定格式Area并汇总Quantity的问题

原查询的问题

原查询无法得到预期结果的核心原因:

  • 误用=匹配通配符:SQL中=会严格匹配字符串,下划线_在这里是普通字符,无法实现"匹配任意单个字符"的效果
  • 大小写不兼容:示例数据里的Area包含小写p/k,但查询条件用的是大写1P__K,导致匹配失败
  • 格式校验不严谨:未验证第3-4位是01-99的有效数字,也没限定Area必须是8位字符串

修正后的查询方案

方案1:通用LIKE匹配(兼容多数SQL数据库)

统一大小写后用通配符匹配,同时补充格式校验:

SELECT
    label,
    COALESCE(SUM(CASE 
        WHEN LOWER(area) LIKE '1p[0-9][0-9]k___' 
             AND LEN(area) = 8
             AND CAST(SUBSTRING(area, 3, 2) AS INT) BETWEEN 1 AND 99
        THEN quantity 
        END), 0) AS '1P_K'
FROM my_table WITH (NOLOCK)
GROUP BY label

方案2:PATINDEX正则匹配(适用于SQL Server)

用正则式实现更精准的格式匹配:

SELECT
    label,
    COALESCE(SUM(CASE 
        WHEN PATINDEX('%1[Pp][0-9][0-9][Kk]___%', area) = 1
             AND LEN(area) = 8
             AND CAST(SUBSTRING(area, 3, 2) AS INT) BETWEEN 1 AND 99
        THEN quantity 
        END), 0) AS '1P_K'
FROM my_table WITH (NOLOCK)
GROUP BY label

结果验证

针对你提供的示例数据,以上查询均会返回预期结果:

Label1P_K
L1100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:45:26