DECIMAL
および NUMERIC
型は真数値データ値を格納します。これらの型は、金銭データを扱う場合など、正確な精度を保持することが重要な場合に使用されます。MySQL では、NUMERIC
は DECIMAL
として実装されるので、DECIMAL
に関する次の注意事項が NUMERIC
にも同様に適用されます。
MySQL 5.6 は DECIMAL
値をバイナリ形式で格納します。セクション12.20「高精度計算」を参照してください。
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
カラムの実際の範囲は、その指定したカラムの精度またはスケールによって制約される場合があります。指定のスケールで許可されている数より多くの桁が小数点以下にある値が、このようなカラムに割り当てられた場合、値はそのスケールに変換されます。(正確な動作はオペレーティングシステム固有ですが、一般的には効果は許可されている桁数に切り捨てられます。)