Oracle-从字​​符串值中删除开头的零

时间:2018-08-01 11:32:27

标签: oracle plsql

我正在使用查询

SELECT CAST(000027 AS VARCHAR2(15)) FROM dual;

但这会删除开头的0000个零,并且只返回27。

如何使它返回000027?

2 个答案:

答案 0 :(得分:1)

00002727都是数字,与Oracle相同,因此不会“看到”前导零。与您想要的内容最接近的是将数字/字符串用零填充到固定长度。假设您要使用长度为6的数字字符串,则可以尝试:

SELECT LPAD(CAST(000027 AS VARCHAR2(15)), 6, '0')
FROM dual;

Demo

答案 1 :(得分:0)

使用字符串文字而不是数字文字:

SELECT CAST('000027' AS VARCHAR2(15)) FROM dual

尽管根据您要执行的操作,转换可能是多余的。

如果您从数字开始就陷入困境,那么它可能比您想象的更早丢失前导零,因为数字实际上没有那些。

如果知道应该有几位数,则可以填充或使用to_char()代替cast()

SELECT TO_CHAR(000027, 'FM000000') FROM dual

如果需要,您仍然可以将其强制转换为varchar2(15),但不确定为什么要这样做,除非您将其用作CTAS语句的一部分。