我正在使用查询
SELECT CAST(000027 AS VARCHAR2(15)) FROM dual;
但这会删除开头的0000个零,并且只返回27。
如何使它返回000027?
答案 0 :(得分:1)
值000027
和27
都是数字,与Oracle相同,因此不会“看到”前导零。与您想要的内容最接近的是将数字/字符串用零填充到固定长度。假设您要使用长度为6的数字字符串,则可以尝试:
SELECT LPAD(CAST(000027 AS VARCHAR2(15)), 6, '0')
FROM dual;
答案 1 :(得分:0)
使用字符串文字而不是数字文字:
SELECT CAST('000027' AS VARCHAR2(15)) FROM dual
尽管根据您要执行的操作,转换可能是多余的。
如果您从数字开始就陷入困境,那么它可能比您想象的更早丢失前导零,因为数字实际上没有那些。
如果知道应该有几位数,则可以填充或使用to_char()
代替cast()
:
SELECT TO_CHAR(000027, 'FM000000') FROM dual
如果需要,您仍然可以将其强制转换为varchar2(15)
,但不确定为什么要这样做,除非您将其用作CTAS语句的一部分。