0

Oracle 11g データベースに特定の文字数 (4 としましょう) を保存しようとしています。データを言うと、私の番号には 0100 0101 などの先行ゼロがあります。オラクルが先行ゼロを切り捨てるのはなぜですか。これを回避することは可能ですか?先頭のゼロを保存してほしいです。助けてください。

ありがとう!

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())として格納します。

数値は、先行ゼロの概念がない2進形式で格納されます。

于 2013-03-21T20:23:49.070 に答える
-2

8桁を取得する簡単なトリック:

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