算術式

構文

add_expression ::= multiply_expression (("+"|"-") multiply_expression)*

multiply_expression ::= unary_expression (("*"|"/"|"div") unary_expression)*

unary_expression ::= path_expression | (("+"|"-") unary_expression)

セマンティクス

Oracle NoSQL Databaseは、算術演算の+、-、*、/およびdivをサポートしています。これらの演算子の各オペランドは、最大1つの数値項目を生成する必要があります。いずれかのオペランドから空の順序またはNULLが返された場合、算術演算の結果もそれぞれ空またはNULLになります。それ以外の場合、演算子は次のように計算される単一の数値項目を返します。
  • いずれかのオペランドが数値項目を返す場合、他のオペランドによって返される項目は数値にキャストされ(まだ数値でない場合)、結果はBigDecimalでjavaの算術式を使用して計算される数値項目になります。それ以外の場合、
  • いずれかのオペランドがdouble項目を返す場合、他のオペランドによって返される項目はdouble値にキャストされ(まだdoubleでない場合)、結果はdoubleでjavaの算術式を使用して計算されるdouble項目になります。それ以外の場合、
  • いずれかのオペランドがfloat項目を返す場合、他のオペランドによって返される項目はfloat値にキャストされ(まだfloatでない場合)、結果はfloatでjavaの算術式を使用して計算されるfloat項目になります。それ以外の場合、
  • div演算子を除き、いずれかのオペランドがlong項目を返す場合、他のオペランドによって返される項目はlong値にキャストされ(まだlongでない場合)、結果はlongでjavaの算術式を使用して計算されるlong項目になります。
  • div演算子を除いて、すべてのオペランドがinteger項目を返す場合、結果はintでjavaの算術式を使用して計算されるinteger項目になります。
  • div演算子は、両方のオペランドがlongまたはinteger、あるいはその両方である場合でも、浮動小数点除算を実行します。この場合、divはdoubleを返します。

Oracle NoSQL Databaseは、単項+演算子と–演算子もサポートしています。単項+はno-opで、単項–はその数値引数の符号を変更します。

例6-52 算術式

ユーザーごとに、IDおよび、実際の収入と、基本収入に年齢比例額を加えたものとして計算される収入との差を示します。

DECLARE
$baseIncome INTEGER;
$ageMultiplier DOUBLE;
SELECT id,
income - ($baseIncome + age * $ageMultiplier) AS adjustment
FROM Users;