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

PostgreSQL中含substring的CASE更新语句报错,请求修复

修复PostgreSQL UPDATE语句错误

报错核心原因:substring(a."SHRCD")调用不符合PostgreSQL语法,该数据库没有仅接收单个字符型参数的substring函数。结合上下文逻辑,这里无需使用substring,直接判断字段值即可;同理substring(a."SHIR01")也是多余调用。

另外还有两处问题需要修正:

  • else分支写法错误,应直接返回目标值,不需要"Channel" =的赋值语法
  • 原语句缺少f4211_mod与f4211_join的关联条件,不补充会导致f4211_mod全表被批量更新为同一值,需添加实际的关联字段(如下示例用关联字段占位,你需替换为真实的关联键)

修复后的完整语句:

update f4211_mod
set "Channel" = case
        when substring(a."SHURRF", 1, 1) in ('P','2','4','5','7') then 'Showroom'
        when substring(a."SHURRF", 1, 1) = '6' then 'Binnendienst'
        when a."SHRCD" in ('A','B') then 'Express'
        when a."SHIR01" in ('B2B','EDI','ICM','PTC','WBXML') then 'E-commerce'
        else 'Binnendienst'
    end
from f4211_join as a
-- 替换为实际的关联字段,比如主键或唯一键
where f4211_mod.关联字段 = a.关联字段;

额外优化说明:

  • 把substring(a."SHURRF",1,1) in ('6')简化为substring(a."SHURRF",1,1) = '6',逻辑一致且更简洁
  • 明确关联条件后,只会更新f4211_mod中与f4211_join匹配的行,避免误操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:01:08