PL/SQL - 运算符优先级
运算符优先级确定表达式中术语的分组。 这会影响表达式的计算方式。 某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2; 这里,x 被赋值为 13,而不是 20,因为运算符 * 的优先级高于 +,所以它首先与 3*2 相乘,然后 添加到 7。
在这里,具有最高优先级的运算符出现在表格的顶部,那些具有最低优先级的出现在底部。 在表达式中,优先级较高的运算符将首先被计算。
运算符的优先级如下: =, <, >, <=, >=, <>, !=, ~=, ^=, IS NULL, LIKE, BETWEEN, IN.
运算符 | 操作 |
---|---|
** | 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.