【发布时间】:2020-08-03 18:18:58
【问题描述】:
在 TSQL 中,我需要创建一个脚本来删除“.”之间的所有前导零,从字符串中的第一个 0 开始,除非有“.0”。任务编号中间的任何位置。当任务号没有 EX: 111.0.123.234 时,我到目前为止做得很好,但我似乎无法弄清楚 SUBSTRING/CHARINDEX/PATINDEX 等的组合来删除所有前导零,除非零是唯一的'.' 之间的数字请参阅随附的屏幕截图和脚本/部分结果作为示例。
这是我的脚本:
SELECT TASKPRODUCTID, (CASE WHEN TASKPRODUCTID NOT LIKE '%.0.%' THEN
REPLACE(LTRIM(REPLACE(TASKPRODUCTID,'0','')),' ','0') ELSE
SUBSTRING(TASKPRODUCTID, PATINDEX('%[^0 ]%', TASKPRODUCTID + ' '), LEN(TASKPRODUCTID))
END) AS NewTaskProductID
FROM TASK
这是部分结果集:
TASKPRODUCTID NewTaskProductID
003.007.002.001 3.7.2.1
003.007.002.003 3.7.2.3
004.003.003.008.0.2017275.132925 4.003.003.008.0.2017275.132925
004.005.001.003 4.5.1.3
004.005.004.004.0.2017275.135139 4.005.004.004.0.2017275.135139
004.005.007.005.0.2017275.140304 4.005.007.005.0.2017275.140304
002.001.002 2.1.2
002.004 2.4
016.010 16.1
谢谢!!
【问题讨论】:
标签: leading-zero