機能
数値式は、数値を指定します。
記述形式
参照項番
数値関数 → “2.5.2 数値関数”
値式一次子 → “2.11 値式”
一般規則
データ型が文字列、各国語文字列、日時型およびBLOB型の値指定、列指定、CAST指定、または集合関数は、演算子を指定することはできません。
値式に含まれる値指定、列指定、または集合関数の値がNULLの場合、値式の結果はNULLになります。
単項演算子+は、直後に続く要素に何も作用しません。単項演算子-は、直後に続く要素の符号を反転します。単項演算子の結果のデータ型を以下に示します。
データ型 | 結果のデータ型 |
---|---|
SMALLINT | INTEGER |
INTEGER | |
DECIMAL(p,q) | DECIMAL(p,q) |
NUMERIC(p,q) | |
REAL | REAL |
DOUBLE PRECISION | DOUBLE PRECISION |
p: 精度、q: 位取り
値式は、括弧の中の式が最初に評価されます。括弧が指定されていない式は、単項演算子が乗除算より先に、乗除算が加減算より先に評価されます。また、同じ実行順序の式は左から右方向の順に評価されます。
除数が0であってはなりません。除数が0ならば、データ例外(ゼロ除算)になります。
二項演算子の左辺と右辺のデータ型が一致していない場合、それぞれのデータ型を変換することがあります。また、結果のデータ型は、左辺および右辺のデータ型と演算子により決定します。“表2.43 二項演算子の左辺および右辺のデータ型変換”にデータ型変換を、“表2.44 二項演算子の演算結果のデータ型”に結果のデータ型を示します。
値式一次子または数値関数に単項演算子+、-を付加したものを因子と呼びます。単項演算子は、省略することができます。
変換前のデータ型 | 変換後のデータ型 | ||
---|---|---|---|
左辺 | 右辺 | 左辺 | 右辺 |
SMALLINT | SMALLINT | 無変換 | 無変換 |
INTEGER | |||
DECIMAL(p,q) | DECIMAL(5,0) | ||
NUMERIC(p,q) | DECIMAL(5,0) | DECIMAL(p,q) | |
REAL | REAL | 無変換 | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
INTEGER | SMALLINT | 無変換 | 無変換 |
INTEGER | |||
DECIMAL(p,q) | DECIMAL(10,0) | ||
NUMERIC(p,q) | DECIMAL(10,0) | DECIMAL(p,q) | |
REAL | REAL | 無変換 | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
DECIMAL(p1,q1) | SMALLINT | 無変換 | DECIMAL(5,0) |
INTEGER | DECIMAL(10,0) | ||
DECIMAL(p2,q2) | 無変換 | ||
NUMERIC(p2,q2) | DECIMAL(p2,q2) | ||
REAL | REAL | 無変換 | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
NUMERIC(p1,q1) | SMALLINT | DECIMAL(p1,q1) | DECIMAL(5,0) |
INTEGER | DECIMAL(p1,q1) | DECIMAL(10,0) | |
DECIMAL(p2,q2) | DECIMAL(p1,q1) | 無変換 | |
NUMERIC(p2,q2) | DECIMAL(p1,q1) | DECIMAL(p2,q2) | |
REAL | REAL | 無変換 | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
REAL | SMALLINT | 無変換 | REAL |
INTEGER | REAL | ||
DECIMAL(p2,q2) | REAL | ||
NUMERIC(p2,q2) | REAL | ||
REAL | 無変換 | ||
DOUBLE PRECISION | |||
DOUBLE PRECISION | SMALLINT | 無変換 | DOUBLE PRECISION |
INTEGER | DOUBLE PRECISION | ||
DECIMAL(p2,q2) | DOUBLE PRECISION | ||
NUMERIC(p2,q2) | DOUBLE PRECISION | ||
REAL | 無変換 | ||
DOUBLE PRECISION |
p : 精度、q : 位取り
p1: 精度、q1: 位取り
p2: 精度、q2: 位取り
演算 | 変換後のデータ型 | 結果のデータ型 | |
---|---|---|---|
左辺 | 右辺 | ||
加減算 | SMALLINT | SMALLINT | INTEGER |
INTEGER | |||
INTEGER | SMALLINT | INTEGER | |
INTEGER | |||
DECIMAL(p1,q1) | DECIMAL(p2,q2) | DECIMAL(m,n) | |
REAL | REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
DOUBLE PRECISION | REAL | DOUBLE PRECISION | |
DOUBLE PRECISION | |||
乗算 | SMALLINT | SMALLINT | INTEGER |
INTEGER | |||
INTEGER | SMALLINT | INTEGER | |
INTEGER | |||
DECIMAL(p1,q1) | DECIMAL(p2,q2) | DECIMAL(m,n) | |
REAL | REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
DOUBLE PRECISION | REAL | DOUBLE PRECISION | |
DOUBLE PRECISION | |||
除算 | SMALLINT | SMALLINT | INTEGER |
INTEGER | |||
INTEGER | SMALLINT | INTEGER | |
INTEGER | |||
DECIMAL(p1,q1) | DECIMAL(p2,q2) | DECIMAL(m,n) | |
REAL | REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | ||
DOUBLE PRECISION | REAL | DOUBLE PRECISION | |
DOUBLE PRECISION |
p1: 精度、q1: 位取り
p2: 精度、q2: 位取り
注) q1+q2>18となる場合は、エラーとなります。
数値式の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
二項演算子の左辺の値式 | 右辺の値式のデータ型 |
二項演算子の右辺の値式 | 左辺の値式のデータ型 |
備考.二項演算子の両辺の値式が動的パラメタ指定の場合はエラーとなります。また、単行演算子の直後に動的パラメタ指定を指定した場合はエラーとなります。
使用例
数値式(列の値を四則演算する場合。仕入価格は20000、発注数量は100とします)
UPDATE 在庫管理.発注表 SET 仕入価格 = 仕入価格 * 0.9,発注数量 = 発注数量 + 150 WHERE 取引先 = 61 →結果は、仕入価格は18000、発注数量は250となります。