17.10 - 使用上の注意 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1143-171K-JPN
Language
日本語 (日本)

ストレージ

小数は、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>を参照してください。