SQL代码优化:如何将000000NA去除前置零转为NA?
解决方案
方案一:通用移除前置零
如果需要处理任意数量前置零+NA的情况(比如0NA、000NA这类格式都要转为NA),可以用以下逻辑,既保留原有的长度控制,又能清理前置零:
, [Analysis code] = '"' + ISNULL( CASE WHEN RIGHT(AX.NominalCode, 8) LIKE '0%NA' THEN SUBSTRING(RIGHT(AX.NominalCode, 8), PATINDEX('%[^0]%', RIGHT(AX.NominalCode, 8)), 2) ELSE RIGHT(AX.NominalCode, 8) END, '' ) + '"'
这里用PATINDEX定位第一个非零字符的位置,直接截取后面的NA部分,适配所有前置零+NA的场景。
方案二:精准替换固定字符串
如果只需要处理特定的000000NA格式,直接用精准匹配替换,逻辑更简洁高效:
, [Analysis code] = '"' + ISNULL( CASE RIGHT(AX.NominalCode, 8) WHEN '000000NA' THEN 'NA' ELSE RIGHT(AX.NominalCode, 8) END, '' ) + '"'
注意事项
两种方案都保留了原代码的ISNULL空值处理和RIGHT(AX.NominalCode, 8)的长度控制逻辑,确保输出符合报表的字符串长度要求,同时解决了带前置零的NA无法被接收软件识别的问题。
内容的提问来源于stack exchange,提问作者Party Pig Jessie
相关产品推荐
相关产品推荐

