Oracleのドキュメントによると:
これが私の見方です:
Precision
の場合 スケールよりも大きい(例:NUMBER(8,5)
)、問題ありません。これは簡単です。Precision
つまり、数値は合計8桁で、そのうち5桁は小数部(。→)であるため、整数部(←。)は3桁になります。これは簡単です。-
その
Precision
が表示されたらScale
よりも小さい (例:NUMBER(2, 5)
)、これは3つのことを意味します:- 数値には整数部分はなく、小数部分のみが含まれます。したがって、整数部分の0は計算にカウントされません。つまり、0.12345ではなく.12345と言います。実際、整数部分に1桁だけを指定すると、常にエラーが返されます。
Scale
数値が持つ小数部の合計桁数を表します。この場合は5。したがって、.12345または.00098にすることができますが、合計で5桁を超えることはできません。- 小数部分は、有効数字とゼロの2つの部分に分けられます。有効数字は
Precision
で指定されます 、およびゼロの最小数は(Scale
-Precision
)。例:
ここで、数値の小数部には最低3つのゼロが必要です。その後に2つの有効数字が続きます(ゼロもあります)。したがって、3つのゼロ+2つの有効数字=5は、
Scale
です。 番号。
簡単に言うと、たとえばNUMBER(6,9)
が表示された場合 、これは、小数部分が必須の3つのゼロで始まり、6桁が続く合計9桁になることを示しています。
ここにいくつかの例があります:
SELECT CAST(.0000123 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012300
SELECT CAST(.000012345 AS NUMBER(6,9)) FROM dual; -- prints: 0.0000123; .000|012345
SELECT CAST(.123456 AS NUMBER(3,4)) FROM dual; -- ERROR! must have a 1 zero (4-3=1)
SELECT CAST(.013579 AS NUMBER(3,4)) FROM dual; -- prints: 0.0136; max 4 digits, .013579 rounded to .0136