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

如何将PACKAGE_ID列转换为匹配PLANT_ID结构的指定格式?

解决方案

可以通过字符串判断+STUFF函数拼接实现需求,核心是先判断PACKAGE_ID是否包含完整末尾两位,再分别处理两种场景:

场景1:PACKAGE_ID含完整末尾两位(如AUTO107842802)

用STUFF函数在指定位置插入分隔符,拆分出对应分段:

SELECT 
    CASE
        -- 判断PACKAGE_ID长度是否符合(PLANT_ID去分隔符后长度+2)
        WHEN LEN(PACKAGE_ID) = LEN(REPLACE(PLANT_ID, '-', '')) + 2
        THEN STUFF(
                STUFF(
                    STUFF(PACKAGE_ID, 5, 0, '-'), -- 第5位插入'-',拆分前缀与第一组数字
                    11, 0, '-'), -- 第11位插入'-',拆分第一组与第二组数字
                14, 0, '-') -- 第14位插入'-',拆分第二组与末尾两位
        -- 场景2:不符合格式时,直接用PLANT_ID追加'-00'
        ELSE CONCAT(PLANT_ID, '-00')
    END AS FORMATTED_PACKAGE_ID
FROM 你的表名;

代码说明

  • REPLACE(PLANT_ID, '-', ''):去掉PLANT_ID的分隔符,得到与PACKAGE_ID前缀一致的无格式字符串(如AUTO1078428)
  • LEN(PACKAGE_ID) = ... +2:判断PACKAGE_ID是否比PLANT_ID去分隔符后的字符串多两位(即包含末尾标识位)
  • 三次STUFF调用:依次在指定位置插入分隔符,将无格式的PACKAGE_ID转换为前缀-数字组1-数字组2-末尾两位的格式
  • CONCAT(PLANT_ID, '-00'):当PACKAGE_ID不符合要求时,直接在PLANT_ID后追加-00

如果PLANT_ID的前缀长度或数字组长度有变化,只需调整STUFF函数的插入位置即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:31:06