注意
DECIMAL型をパーティションキーとして使用し、ODP経由でOceanBaseデータベースに接続する場合は、正確なルーティングを確保するためにODPのバージョンがV4.2.3以降であることを確認してください。
固定小数点数型は可変長の正確な数値型であり、値の範囲と精度はPrecisionとScale、および符号が無符号かどうかによって決まります。
DECIMAL は NUMERIC と同等です。構文は以下のとおりです:
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
M は格納可能な総桁数(Precision)、D は小数点以下の桁数(Scale)を表します。小数点と負の記号「-」は M には含まれません。D が0の場合、値に小数点または小数部はありません。整数部の最大有効桁数は M から D を引いた値、つまりPrecisionからScaleを引いた値に等しくなります。DECIMAL 列に対するすべての基本的な計算(+、-、*、/)では、65ビットの精度が使用されます。
DECIMAL の M の最大値は65、D の最大値は30です。D を省略した場合、デフォルトは0です。M を省略した場合、デフォルトは10です。
数値列に ZEROFILL を指定すると、OceanBaseデータベースは自動的にその列に UNSIGNED プロパティを追加します。UNSIGNED を指定した場合、負の値を許可しません。
例えば、DECIMAL(5,2) の場合、整数部と小数部の最大有効桁数はそれぞれ3と2なので、値の範囲は [-999.99, 999.99] となります。同時に UNSIGNED として定義した場合、値の範囲は [0, 999.99] となります。
以下の型も DECIMAL のシノニムです。その中で、FIXED は他のデータベースシステムとの互換性を持たせるために使用できます。
DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]