数据库 - 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
。只有一个零?前导零的长度可能并不总是相同。
谢谢, 格雷格
答案 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;