我必须制作一个修正前导零的功能。然而,它比仅仅摆脱第一个零点更复杂一些。
几个例子和结果:
我自己构建了一个查询,并提出了以下内容
RETURN LEFT(@input, PATINDEX('%0%', @input)-1) +
SUBSTRING(SUBSTRING(@input, PATINDEX('%0%',@input), LEN(@input)), PATINDEX('%[^0]%', SUBSTRING(@input,PATINDEX('%0%',@input),LEN(@input))),len(@input))
现在,这对于获得上述结果非常有用。
但是:
ZBET108应保持 ZBET108。 - 上述查询返回 ZBET18
我无法让它发挥作用。查询应该找到第一个数字字符串并修剪它的前导零。它现在似乎要做的是搜索第一个零并删除它。
有人可以帮助我吗?
非常感谢你们。
答案 0 :(得分:1)
我认为这可能有效:
RETURN (CASE WHEN LEFT(@input, CHARINDEX('0', @input)-1) LIKE '%[0-9]%'
THEN @input
ELSE LEFT(@input, CHARINDEX('0', @input)-1) +
SUBSTRING(SUBSTRING(@input, PATINDEX('%0%',@input), LEN(@input)), PATINDEX('%[^0]%', SUBSTRING(@input,PATINDEX('%0%',@input),LEN(@input))),len(@input))
END)
这只是检查第一个0是字符串中的第一个数字。