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.