Plsql-operators-precedence

提供:Dev Guides
移動先:案内検索

PL/SQL-演算子の優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は、他の演算子よりも優先順位が高くなっています。たとえば、乗算演算子は加算演算子よりも優先順位が高くなります。

たとえば、 x = 7 + 3 2 ;ここでは、演算子*の優先順位が+より高いため、 *x には20ではなく 13 が割り当てられます。したがって、最初に 3 2 で乗算され、 *7 に加算されます。

ここでは、優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。 式内では、優先順位の高い演算子が最初に評価されます。

演算子の優先順位は、=、<、>、⇐、> =、<>、!=、〜=、^ =、IS NULL、LIKE、BETWEEN、INです。

Operator Operation
** exponentiation
+, - identity, negation
*,/ multiplication, division
+, -,
addition, subtraction, concatenation
comparison
NOT logical negation
AND conjunction
OR inclusion

PL/SQLで利用可能な演算子の優先順位を理解するには、次の例を試してください-

DECLARE
   a number(2) := 20;
   b number(2) := 10;
   c number(2) := 15;
   d number(2) := 5;
   e number(2) ;
BEGIN
   e := (a + b) *c/d;      -- ( 30* 15 )/5
   dbms_output.put_line('Value of (a + b) *c/d is : '|| e );
   e := ((a + b)* c)/d;   -- (30 *15 )/5
   dbms_output.put_line('Value of ((a + b)* c)/d is  : ' ||  e );
   e := (a + b) *(c/d);   -- (30)* (15/5)
   dbms_output.put_line('Value of (a + b) *(c/d) is  : '||  e );
   e := a + (b* c)/d;     --  20 + (150/5)
   dbms_output.put_line('Value of a + (b *c)/d is  : ' ||  e );
END;
/

上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-

Value of (a + b)* c/d is : 90
Value of ((a + b) *c)/d is  : 90
Value of (a + b)* (c/d) is  : 90
Value of a + (b * c)/d is  : 50

PL/SQL procedure successfully completed.