删除除最后一个零之外的前导零

Remove Leading Zeros Except last Zero

数据库 - SQL 服务器 2012

我目前正在使用以下代码:

substring(
    SUBSTRING(col001, 59, 8), 
    patindex(
        '%[^0]%', 
        SUBSTRING(col001, 59, 8)
    ),
    10
) as TOTAL_DETAIL_RECORD_COUNT

很多子字符串,我知道,但它在大多数情况下都有效。不过有一个问题。一些列值是 000000000。在这种情况下,substring/patindex 子句保持原样。我可以做些什么来将 000000000 的值转换为 return 0。只有一个零?前导零的长度可能并不总是相同。

谢谢, 格雷格

你没有提到你使用的是什么数据库。在 Oracle 中,这将是:

select nvl(ltrim(substr(col001, 59, 8), '0'), '0')
from dual;

像在 INT 中一样转换您的子字符串,然后将其转换回字符串

Select cast(cast('000000000' as int) as varchar(25))  -- Returns a string of 0
Select cast(cast('000000025' as int) as varchar(25))  -- Returns a string of 25