我试图在我的 oracle 11g 数据库中保存一些特定的字符(比如说 4 个)。当我说数据时,我的数字有一个前导零,例如 0100 0101 等。为什么 oracle 会截断前导零。有没有可能避免这种情况。我真的希望前导零得到保存。请帮忙。
谢谢!
如果要显示带有前导零的数字,请使用:
to_char(my_number,'fm0000')
如果您确实需要使用前导零存储数字,请将其存储为 varchar2,因为您所拥有的是一个仅由数字组成的字符串,而不是数字。
上面的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
如果要存储前导零,则将数字存储char()
为固定长度值的 a 或varchar()
(或varchar2()
)可变长度值。
数字以二进制格式存储,没有前导零的概念。
获得8位数字的简单技巧:
substr(your_number + power(10,8), 2)