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 |