7.26.2 四則演算の結果のデータ型
四則演算の結果のデータ型は,第1演算項と第2演算項のデータ型によって決まります。演算項のデータ型と演算結果のデータ型の関係を次の表に示します。
|
第1演算項のデータ型 |
第2演算項のデータ型 |
演算結果のデータ型 |
|---|---|---|
|
BIGINT, INTEGER, SMALLINT |
BIGINT |
BIGINT※ |
|
INTEGER |
||
|
SMALLINT |
||
|
DECIMAL |
DECIMAL |
|
|
NUMERIC |
||
|
DOUBLE PRECISION |
DOUBLE PRECISION |
|
|
FLOAT |
||
|
REAL |
||
|
DECIMAL, NUMERIC |
BIGINT |
DECIMAL |
|
INTEGER |
||
|
SMALLINT |
||
|
DECIMAL |
||
|
NUMERIC |
||
|
DOUBLE PRECISION |
DOUBLE PRECISION |
|
|
FLOAT |
||
|
REAL |
||
|
DOUBLE PRECISION, FLOAT, REAL |
BIGINT |
DOUBLE PRECISION |
|
INTEGER |
||
|
SMALLINT |
||
|
DECIMAL |
||
|
NUMERIC |
||
|
DOUBLE PRECISION |
||
|
FLOAT |
||
|
REAL |
- 注※
-
整数データ型のデータ形式がレガシー形式の場合はINTEGER型になります。
演算結果のデータ型が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になります。
なお,演算結果のデータ型がBIGINT型の場合はDECIMAL(20,0),INTEGER型の場合はDECIMAL(10,0),SMALLINT型の場合はDECIMAL(5,0)として計算してください。※
- 注※
-
整数データ型のデータ形式がレガシー形式の場合,演算結果のデータ型がBIGINT型またはINTEGER型のときはDECIMAL(20,0),SMALLINT型のときはDECIMAL(10,0)として計算してください。