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 |