使用 SUBSTRING 截断前导零

Leading Zeros getting truncated using SUBSTRING

列中的一个值是
089-002007

我想提取'-'后的所有数字

SELECT SUBSTR(EMP_NO,5)
FROM Table_Name  

但是,我得到的输出为“2007”,前导零被截断了。我有多个值,在“-”之后以 0 开头。

我该如何解决这个问题?

看起来它正在隐式地将结果更改为 int,因此切断了前导零。我建议 CAST-ing SELECT

SELECT CAST(SUBSTR(EMP_NO,5) AS VARCHAR(10))
FROM Table_Name  

DB2 是什么平台和版本?

根据您显示的代码,您应该会得到“002007”。

SUBSTR()的输出已经是varchar。

DBMS 不会将其从 varchar 更改为 int,除非您尝试将其视为 int。

select substr('089-002007',5)
from sysibm.sysdummy1        

Returns

SUBSTR
002007

另一方面,

select substr('089-002007',5) + 0
from sysibm.sysdummy1        

Returns

Numeric Expression
           2,007