7.26.2 四則演算の結果のデータ型
四則演算の結果のデータ型は,第1演算項と第2演算項のデータ型によって決まります。演算項のデータ型と演算結果のデータ型の関係を次の表に示します。
項番 |
第1演算項のデータ型 |
第2演算項のデータ型 |
演算結果のデータ型 |
---|---|---|---|
1 |
SMALLINT |
SMALLINT |
INTEGER |
2 |
INTEGER, BIGINT |
||
3 |
DECIMAL, NUMERIC |
DECIMAL |
|
4 |
DOUBLE PRECISION, FLOAT |
DOUBLE PRECISION |
|
5 |
INTEGER, BIGINT |
SMALLINT |
INTEGER |
6 |
INTEGER, BIGINT |
||
7 |
DECIMAL, NUMERIC |
DECIMAL |
|
8 |
DOUBLE PRECISION, FLOAT |
DOUBLE PRECISION |
|
9 |
DECIMAL, NUMERIC |
SMALLINT |
DECIMAL |
10 |
INTEGER, BIGINT |
||
11 |
DECIMAL, NUMERIC |
||
12 |
DOUBLE PRECISION, FLOAT |
DOUBLE PRECISION |
|
13 |
DOUBLE PRECISION, FLOAT |
SMALLINT |
DOUBLE PRECISION |
14 |
INTEGER, BIGINT |
||
15 |
DECIMAL, NUMERIC |
||
16 |
DOUBLE PRECISION, FLOAT |
演算結果のデータ型がDECIMAL型の場合,精度と位取りは次のようになります。
第1演算項がDECIMAL(p1,s1)またはNUMERIC(p1,s1),第2演算項がDECIMAL(p2,s2)またはNUMERIC(p2,s2),演算結果がDECIMAL(p,s)とします。
-
加算および減算の場合
p=1+MAX(p1−s1,p2−s2)+s
s=MAX(s1,s2)
pの計算結果が39以上の場合,p=38になります。
-
乗算の場合
p=p1+p2
s=s1+s2
pの計算結果が39以上の場合,p=38,s=MAX(s1,s2)になります。
-
除算の場合
p=38
s=MAX{0※,38−(p1−s1+s2)}
- 注※
-
サーバ定義またはクライアント定義のadb_sql_prep_dec_div_rs_priorオペランドの指定値がFRACTIONAL_PARTの場合は,s1になります。
なお,データ型がINTEGER型またはBIGINT型の場合は,DECIMAL(20,0)として計算してください。SMALLINT型の場合は,DECIMAL(10,0)として計算してください。