有谁知道 Oracle 9 和 Oracle 10 之间的运算符优先级是否有一些重大变化?
与 10 相比,AND / OR 在 9 中的处理方式似乎有所不同。
9I 和 10G 的 AND 都具有比 OR 更高的优先级(根据这些 URL)
此 URL 确实列出了 PL/SQL 编译器评估中的一些更改,但这些更改与 AND 或 OR 无关:http: //oraclefunda.wordpress.com/2008/06/18/plsql-enhancements-in-oracle-数据库-10g/
参考文献(AND 和 OR 评估):
10G:
PL/SQL 当 PL/SQL 计算布尔表达式时,NOT 具有最高优先级,AND 具有次高优先级,而 OR 具有最低优先级。但是,您可以使用括号来覆盖默认的运算符优先级。
9I: http : //docs.oracle.com/cd/B10501_01/appdev.920/a96624/02_funds.htm#3860 最高:**、+、-、*、/、+、-、||、=、< , >, <=, >=, <>, !=, ~=, ^=, IS NULL, LIKE, BETWEEN, IN, NOT, AND, OR
根据手册, 9i和10g中的条件优先级没有区别。(假设你的意思是条件,而不是操作符。对于操作符来说,故事是一样的,除了 10g 有一个新的操作符,connect_by_root
.)
这是优先级,从高到低排列:
SQL operators are evaluated before SQL conditions
=, !=, <, >, <=, >=,
IS [NOT] NULL, LIKE, [NOT] BETWEEN, [NOT] IN, EXISTS, IS OF type
NOT
AND
OR
正如@Rajesh Chamarthi 所提到的,改变它会导致各种各样的问题,而且我从来没有遇到过版本之间的优先级差异。
但是,如果有一些特定的错误,或者一些罕见的模棱两可的陈述被区别对待,我不会感到惊讶。