删除除最后一个零之外的前导零
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
数据库 - 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