0

我试图在我的 oracle 11g 数据库中保存一些特定的字符(比如说 4 个)。当我说数据时,我的数字有一个前导零,例如 0100 0101 等。为什么 oracle 会截断前导零。有没有可能避免这种情况。我真的希望前导零得到保存。请帮忙。

谢谢!

4

4 回答 4

5

如果要显示带有前导零的数字,请使用:

to_char(my_number,'fm0000')

如果您确实需要使用前导零存储数字,请将其存储为 varchar2,因为您所拥有的是一个仅由数字组成的字符串,而不是数字。

于 2013-03-21T20:23:31.190 回答
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
于 2013-03-21T20:50:02.510 回答
1

如果要存储前导零,则将数字存储char()为固定长度值的 a 或varchar()(或varchar2())可变长度值。

数字以二进制格式存储,没有前导零的概念。

于 2013-03-21T20:23:49.070 回答
-2

获得8位数字的简单技巧:

substr(your_number + power(10,8), 2)
于 2013-03-21T20:36:34.433 回答