删除除零尾以外的前导零

时间:2016-11-03 15:50:15

标签: sql sql-server substring leading-zero patindex

数据库 - SQL Server 2012

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

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

我知道很多子串,但它大部分都在工作。虽然有一个问题。某些列值为000000000。在这种情况下,substring / patindex子句就会保持原样。我可以做些什么来将000000000的值变为返回0。只有一个零?前导零的长度可能并不总是相同。

谢谢, 格雷格

2 个答案:

答案 0 :(得分:2)

将您的子字符串转换为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

答案 1 :(得分:0)

您没有提到您正在使用的数据库。在Oracle中,这将是:

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