16.20 - DECIMAL/NUMERICデータ型 - Teradata Vantage NewSQL Engine

Teradata Vantage™ データ タイプおよびリテラル

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

目的

n桁の小数を表わします(m桁のうちのn桁は小数点の右側)。

構文



n
精度(格納できる最大桁数)。
範囲は1~38です。
m
位取り(小数桁数)。
範囲は0~nです。
nmに対して値が指定されていない場合、デフォルトはDECIMAL(5, 0)です。
mに対して値が指定されていない場合、デフォルトはDECIMAL(n, 0)です。
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アーキテクチャ クライアント表記
  • RISC
  • Motorola 68000
  • WE 32000
2の補数表現による符号付き2進数(最上位バイトが最初)。
nのこれらの値は、次のとおりです。
  • 1または2、数値は8ビット
  • 3または4、数値は16ビット
  • 5から9、数値は32ビット
  • 10から18、数値は64ビット
  • 19から38、数値は128ビット
Intel 2の補数表現による符号付き2進数(最下位バイトが最初)。
nのこれらの値は、次のとおりです。
  • 1または2、数値は8ビット
  • 3または4、数値は16ビット
  • 5から9、数値は32ビット
  • 10から18、数値は64ビット
  • 19から38、数値は128ビット
  • IBMメインフレーム
  • UTS
20バイト(最大) n桁(nは数の精度で38未満)、符号付きパック10進数。

右端のニブルは符号を表わします。

+記号には次の16進数表現が含まれます。
  • X'A'
  • X'C'
  • X'E'
  • X'F'
-記号には次の16進数表現が含まれます。
  • X'B'
  • X'D'

残りのニブルは、X'0'~X'9'の数字を表わし(nが偶数の場合は左側に0を埋め込む)、合計で(n+2)/2バイトになります(最大20バイト)。

DECIMALタイプのサイズに関するアプリケーション要件

アプリケーションによっては、18桁以下または15桁以下のDECIMALタイプが必要になります。

このような要件をもったアプリケーションでも、より多くの桁のDECIMAL列にアクセスしたり、より多くの桁のDECIMAL結果を生じる式を使用する場合があります。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タイプに変換する