DECIMAL 型または NUMERIC 型 - AWS Clean Rooms

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DECIMAL 型または NUMERIC 型

DECIMAL データ型または NUMERIC データ型を使用し、ユーザー定義の精度で値を格納します。DECIMAL キーワードと NUMERIC キーワードは同じように使用できます。このドキュメントでは、このデータ型を表す用語として decimal を優先的に使用します。numeric という用語は一般的に整数、10 進数、および浮動小数点のデータ型を称する場合に使用します。

ストレージ 範囲
可変。非圧縮の DECIMAL 型の場合は最大 128 ビット。 最大で 38 桁の精度を持つ、128 ビットの符号付き整数。

テーブル内に DECIMAL 列を定義するには、precisionscale を次のように指定します。

decimal(precision, scale)
precision

値全体での有効な桁の合計。小数点の両側の桁数。例えば、数値 48.2891 の場合は精度が 6、スケールが 4 となります。指定がない場合、デフォルトの精度は 18 です。最大精度は 38 です。

入力値で小数点の左側の桁数が、列の精度から列のスケールを引いて得られた桁数を超えている場合、入力値を列にコピー (または挿入も更新も) することはできません。このルールは、列の定義を外れるすべての値に適用されます。例えば、numeric(5,2) 列の値の許容範囲は、-999.99999.99 です。

scale

小数点の右側に位置する、値の小数部における小数の桁数です。整数のスケールはゼロです。列の仕様では、スケール値は精度値以下である必要があります。指定がなければ、デフォルトのスケールは 0 です。最大スケールは 37 です。

テーブルにロードされた入力値のスケールが列のスケールより大きい場合、値は指定されたスケールに丸められます。SALES テーブルの PRICEPAID 列が DECIMAL(8,2) 列である場合を例にとります。DECIMAL(8,4) の値を PRICEPAID 列に挿入すると、値のスケールは 2 に丸められます。

insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)

ただし、テーブルから選択された値の明示的なキャストの結果は丸められません。

注記

DECIMAL(19,0) 列に挿入できる最大の正の値は、9223372036854775807 (263 -1) です。最大の負の値は -9223372036854775807 です。例えば、値 9999999999999999999 (19 桁の 9 の並び) の挿入を試みると、オーバーフローエラーが発生します。小数点の位置に関係なく、 AWS Clean Rooms が DECIMAL 数として表現できる最大の文字列は 9223372036854775807 です。例えば、DECIMAL(19,18) 列にロードできる最大値は 9.223372036854775807 です。

これらの規則は、次の理由によるものです。

  • 精度の有効桁数が 19 桁以下の DECIMAL 値は、内部で 8 バイトの整数として格納されます。

  • 精度の有効桁数が 20 ~ 38 桁の DECIMAL 値は、16 バイトの整数として格納されます。

128 ビットの DECIMAL または NUMERIC の列の使用に関する注意事項

アプリケーションがそのような精度を必要とすることが明確でない限り、最大精度を DECIMAL 列に任意に割り当てないでください。128 ビット値は、64 ビット値の 2 倍のディスク容量を使用するので、クエリの実行時間が長くなる可能性があります。