Oracle は数値データ型の末尾のゼロを保持しますか?
Oracle では、数値データ型はさまざまな精度の数値を処理できるように設計されていますそしてスケール。ただし、数値をクエリするときに末尾のゼロが表示されないシナリオが発生する可能性があります。
この問題を説明するには、次の例を考えてみましょう。
create table decimal_test(decimal_field number(*,10)); insert into decimal_test(decimal_field) values(10); insert into decimal_test(decimal_field) values(10.11); insert into decimal_test(decimal_field) values(10.100); insert into decimal_test(decimal_field) values(10.00); select * from decimal_test;
SQL Developerでこのテーブルをクエリする場合、結果は次のように表示されます。
10 10.11 10.1 10
ご覧のとおり、数値の末尾のゼロは表示されません。この動作により、Java コードで BigDecimal 値を比較するときに混乱が生じる可能性があります。数値のスケールはデータベースに保存された後に変更される可能性があるためです。
問題の理解
出力に末尾のゼロがないことは、データ ストレージの問題ではなく、表示の問題です。 Oracle は内部的に、末尾のゼロを保持する必要のない形式で数値を格納します。これは、末尾のゼロが重要ではないとみなされるためです。
末尾のゼロの処理
Oracle は末尾のゼロをネイティブに保存しませんが、この問題を処理するためのオプションがいくつかあります。
表示形式:
必要な場合表示目的で末尾のゼロを使用する場合は、値を文字列に変換するときに書式設定テクニックを使用できます。たとえば、次の Java コードは小数点以下 4 桁の数値を表示します:
System.out.printf("%10.4d\n", decimalValue);
スケール コントロール:
問題が比較時のスケールの違いに関連している場合BigDecimal 値の場合、比較を行う前にスケールを目的の値に明示的に設定できます。これにより、値が正しく比較されるようになります。
以上がOracle の数値データ型は末尾のゼロを保持しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。