目的
n桁の小数を表わします(m桁のうちのn桁は小数点の右側)。
構文
- n
- 精度(格納できる最大桁数)。
- m
- 位取り(小数桁数)。
- attributes
- 適切なデータ型属性、列記憶属性、または列制約属性。
ANSI準拠
NUMERICはANSI SQL:2011規格に含まれています。DECIMALはNUMERICに関するTeradataの同義語です。
ストレージ
小数は、10のべき乗(指数は、小数部の桁数と等しい)によって位取りされます。この数は、1バイト、2バイト、4バイト、8バイト、または16バイトのいずれかの2の2進補数として格納されます。小数に使用されるバイト数は、その値の桁数の合計によって異なります。
次のリストに、小数の値を格納するために使用されるバイト数を示します。
桁数 | バイト数 |
---|---|
1~2 | 1 |
3~4 | 2 |
5~9 | 4 |
10~18 | 8 |
19~38 | 16 |
例えば、DECIMAL(3,2)には2バイト必要で、値-2は2の補数表現による2進数の形式で-200として表わされます。
DECIMAL(n,m)の最大値は、n個の9で構成される値で、小数点の右側がm桁になります。最小値は、最大値の負数になります。
例:
n | m | 最大値 | 最小値 |
---|---|---|---|
3 | 2 | 9.99 | -9.99 |
4 | 4 | .9999 | -.9999 |
9 | 1 | 99999999.9 | -99999999.9 |
DECIMAL/NUMERIC数の外部表現
次の表は、DECIMAL/NUMERICデータ型のクライアント表現を示したものです。
アプリケーション定義とクライアント データ型を判別するのは、アプリケーション プログラマの責任です。
クライアントCPUアーキテクチャ | クライアント表記 |
---|---|
|
2の補数表現による符号付き2進数(最上位バイトが最初)。 nのこれらの値は、次のとおりです。
|
Intel | 2の補数表現による符号付き2進数(最下位バイトが最初)。 nのこれらの値は、次のとおりです。
|
|
20バイト(最大) n桁(nは数の精度で38未満)、符号付きパック10進数。 右端のニブルは符号を表わします。 +記号には次の16進数表現が含まれます。
-記号には次の16進数表現が含まれます。
残りのニブルは、X'0'~X'9'の数字を表わし(nが偶数の場合は左側に0を埋め込む)、合計で(n+2)/2バイトになります(最大20バイト)。 |
DECIMALタイプのサイズに関するアプリケーション要件
アプリケーションによっては、18桁以下または15桁以下のDECIMALタイプが必要になります。
- CAST機能を使って、18桁以下または15桁以下のDECIMALタイプに変換する。
- DBS制御のMaxDecimalフィールドを使って、DECIMAL引数を使用した式のDECIMAL結果における最大桁数を設定する。
- メインフレーム接続システムの場合、DBCAREAデータ領域の最大10進戻り値フィールドに、CLIv2のDECIMALデータ型の結果列の最大精度を設定する。
- ワークステーション接続システムの場合、DBCAREAデータ領域の最大10進精度フィールドに、CLIv2のDECIMALデータ型の結果列の最大精度を設定する。
- DECIMALDIGITS BTEQコマンドを使用して、非フィールド モードで以降のSQLリクエストに関連する10進数値の最大精度を設定する。戻り値の最大精度桁数は、レコード モード(レコード、標識、およびマルチパート標識)のすべてに適用されますが、フィールド モードには適用されません。フィールド モードの場合は、CASTを実行するか、FORMAT句を使用する必要があります。
DECIMAL式結果タイプのサイズ
MaxDecimalフィールドをDBS制御内に設定すれば、DECIMAL引数を使用した式のDECIMAL結果における最大桁数を制御することができます。
MaxDecimalフィールドには、4つの有効値があります。
MaxDecimalの値 | 式のDECIMAL結果の最大桁数 |
---|---|
0 | 15。オペランドの桁が15またはそれ以下の場合。 18。一方のオペランドの桁が16~18、その他のオペランドの桁が18またはそれ以下の場合。 |
15 | |
18 | 18。オペランドの桁が18またはそれ以下の場合。 |
38 | 38 |
DECIMAL引数を使用した式のDECIMAL結果における桁数は、DBS ControlのMaxDecimal値とDECIMAL引数の桁数によって異なる。
例えば、MaxDecimalの値が15であるとします。DECIMAL(15)引数とDECIMAL(15)引数を加算する算術式の結果はDECIMAL(15)になります。DECIMAL(15)引数とDECIMAL(18)引数を加算する算術式の結果はDECIMAL(18)になります。
DECIMAL引数を使用した式のDECIMAL結果の桁数についての詳細は、<Teradata Vantage™ SQL関数、式、および述部、B035-1145>を参照してください。
例: DECIMALデータ型
256.78を例として使用します。その型はDECIMAL (5,2)、デフォルトの形式は-(4).9(2)またはそれと同じ意味の ----.99と表記されます。
DECIMALまたはNUMERICのデフォルトの表示形式については、データ型のデフォルトの形式で説明されています。
例: DECIMAL型としてのテーブル列の定義
次に示すのはテーブル定義ですが、Salary列のタイプにはDECIMALが指定されています。
CREATE TABLE Salaries (Id CHAR(9) ,Salary DECIMAL(8,2) FORMAT 'ZZZ,ZZ9.99' CHECK (Salary BETWEEN 1.00 AND 999000.00) );
関連トピック
詳細情報 | 参照先 |
---|---|
MaxDecimalの値の変更 | Teradata Vantage™ - データベース ユーティリティ、B035-1102. |
DBCAREAの最大10進戻り値 | Teradata® CLI V2メインフレーム接続システム、B035-2417. |
DBCAREAの最大10進精度 | Teradata® CLI V2ワークステーション接続システム、B035-2418. |
DECIMALDIGITS BTEQコマンド | Basic Teradata®Queryリファレンス、B035-2414. |
DECIMALタイプの四捨五入 | 切り上げ/切り捨て |
DECIMAL引数を使った式の結果 | Teradata Vantage™ SQL関数、式、および述部、B035-1145. |
CASTを使って、18桁以下または15桁以下のDECIMALタイプに変換する |