DECIMALの結果のデータ型 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/djk1612415574830.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

DECIMALオペランドが関与するバイナリ算術演算の結果のデータ型は、次のようになります。

左のオペランド 右のオペランド 使用する演算子 結果のデータ型
DATE DECIMAL(k,j) * / MOD DECIMAL(p,j)

DATEのこれらの演算はエラーを報告しませんが、結果は、通常意味がありません。

BYTEINT

SMALLINT

INTEGER

BIGINT

* / + - MOD DECIMAL(p,j)
DECIMAL(m,n) BYTEINT

SMALLINT

INTEGER

BIGINT

+ - * DECIMAL(p,n)
DATE * DECIMAL(p,n)

DATEのこれらの演算はエラーを報告しませんが、結果は、通常意味がありません。

この場合、pの値、つまり小数結果の桁数は、以下によって異なります。
  • DBSControlでMaxDecimalに指定した値。

    DBSControlとMaxDecimalの詳細は、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>の「DBS制御ユーティリティ」を参照してください。

  • 小数オペランドの桁数。ただし、演算子の右のDECIMAL(k,j)オペランドの場合は桁数はk、演算子の左のDECIMAL(m,n)オペランドの場合は桁数はm
MaxDecimalの値 小数オペランドの桁数 p
0または15 ≤ 15 15
> 15および≤18 18
> 18 38
18 ≤ 18 18
> 18 38
38 任意の値 38
左のオペランド 右のオペランド 使用する演算子 結果のデータ型
DECIMAL(m,n) DECIMAL(k,j) + - DECIMAL(min(p,(1+max(n,j)+max(m -n,k-j))),max(n,j))
* DECIMAL(min(p,m +k),(n +j))
/ MOD DECIMAL(p,max(n,j))

この場合、DBSControl内のMaxDecimalに指定した値と、DECIMAL(m,n)オペランドおよびDECIMAL(k,j)オペランドの桁数によって、小数結果のデータ型の定義におけるpの値は異なります。

MaxDecimalの値 条件 p
0または15 mおよびk ≤ 15 15
(mまたはk > 15)と(mおよびk ≤18) 18
mまたはk > 18 38
18 mおよびk ≤ 18 18
mまたはk > 18 38
38 mおよびk = 任意の値 38