如何将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
相关产品推荐
相关产品推荐

