我试图在我的oracle 11g db中保存一些特定字符(让我们说4)。我的数字有一个前导零 当我说数据时,这样的0100 0101等。为什么oracle会截断前导零。有可能避免这种情况。我真的希望领先的零被保存。请帮忙。
谢谢!
答案 0 :(得分:5)
如果要显示前导零的数字,请使用:
to_char(my_number,'fm0000')
如果确实需要存储带有前导零的数字,那么将其存储为varchar2,因为你所拥有的字符串只包含数字,而不是数字。
答案 1 :(得分:3)
上面的TO_CHAR
答案最好,但是需要进行调整,因为TO_CHAR(number, '0000')
会将前导零加上添加到前导空格,如果存在负数,则为占位符签名:
SELECT '[' || TO_CHAR(123, '0000') || ']' "Format" FROM DUAL;
Format
-------
[ 0123] <-- note the leading space
要删除空格,请使用LTRIM或使用格式字符串中的FM限定符:
SELECT '[' || TO_CHAR(123, 'FM0000') || ']' "Format" FROM DUAL;
Format
-------
[0123] <-- no more leading space
答案 2 :(得分:1)
如果要存储前导零,则将数字存储为char()
(固定长度值)或varchar()
(或varchar2()
)以获取可变长度值。
数字以二进制格式存储,没有前导零的概念。
答案 3 :(得分:-2)
获得8位数的简单技巧:
substr(your_number + power(10,8), 2)