PL/SQL - 運算子優先順序



運算子優先順序決定了表示式中術語的組合方式。這會影響表示式的計算方式。某些運算子的優先順序高於其他運算子;例如,乘法運算子的優先順序高於加法運算子。

例如,x = 7 + 3 * 2;這裡,x 被賦值為 13,而不是 20,因為運算子 * 的優先順序高於 +,所以它首先計算 3*2,然後加上 7

這裡,優先順序最高的運算子出現在表的上方,優先順序最低的出現在下方。在一個表示式中,優先順序較高的運算子將首先被計算。

運算子的優先順序如下:=, <, >, <=, >=, <>, !=, ~=, ^=, IS NULL, LIKE, BETWEEN, IN。

運算子 操作
** 指數
+, - 恆等式,否定
*, / 乘法,除法
+, -, || 加法,減法,連線
比較
NOT 邏輯否定
AND 合取
OR 包含

示例

嘗試以下示例以瞭解 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. 
plsql_operators.htm
廣告