1

数据库 - SQL Server 2012

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

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

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

谢谢,格雷格

4

2 回答 2

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
于 2016-11-03T16:19:02.033 回答
0

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

select nvl(ltrim(substr(col001, 59, 8), '0'), '0')
from dual;
于 2016-11-03T16:00:07.717 回答