DECIMAL
および NUMERIC
型は真数値データ値を格納します。 これらの型は、金銭データを扱う場合など、正確な精度を保持することが重要な場合に使用されます。 MySQL では、NUMERIC
は DECIMAL
として実装されるので、DECIMAL
に関する次の注意事項が NUMERIC
にも同様に適用されます。
MySQL は、DECIMAL
値をバイナリ形式で格納します。 セクション12.25「高精度計算」を参照してください。
DECIMAL
のカラム宣言では、精度とスケールを指定できます (通常は指定します)。 例:
salary DECIMAL(5,2)
この例では、5
が精度で、2
がスケールです。 精度は、その値に格納された有効な桁数を表し、スケールは小数点以下に格納できる桁数を表しています。
標準 SQL では、DECIMAL(5,2)
には小数部が 2 桁の合計 5 桁の値を格納できる必要があるので、salary
カラムに格納できる値は、-999.99
から 999.99
の範囲になります。
標準 SQL では、構文 DECIMAL(
は、M
)DECIMAL(
と同等です。 同様に、構文 M
,0)DECIMAL
は DECIMAL(
と同等です。M
,0)M
の値を決定するために、実装は許可されています。 MySQL は、DECIMAL
構文のこれらのバリアント形式をどちらもサポートします。 M
のデフォルト値は 10 です。
スケールが 0 の場合、DECIMAL
値には小数点も小数部も含まれません。
DECIMAL
の最大桁数は 65 ですが、指定した DECIMAL
カラムの実際の範囲は、その指定したカラムの精度またはスケールによって制約される場合があります。 指定のスケールで許可されている数より多くの桁が小数点以下にある値が、このようなカラムに割り当てられた場合、値はそのスケールに変換されます。 (正確な動作はオペレーティングシステム固有ですが、一般的には効果は許可されている桁数に切り捨てられます。)