2

有谁知道 Oracle 9 和 Oracle 10 之间的运算符优先级是否有一些重大变化?

与 10 相比,AND / OR 在 9 中的处理方式似乎有所不同。

4

2 回答 2

2

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:

http://www.di.unipi.it/~ghelli/didattica/bdldoc/B19306_01/appdev.102/b14261/expression_definition.htm

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

于 2012-07-14T00:21:06.430 回答
1

根据手册, 9i10g中的条件优先级没有区别。(假设你的意思是条件,而不是操作符。对于操作符来说,故事是一样的,除了 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 所提到的,改变它会导致各种各样的问题,而且我从来没有遇到过版本之间的优先级差异。

但是,如果有一些特定的错误,或者一些罕见的模棱两可的陈述被区别对待,我不会感到惊讶。

于 2012-07-14T00:01:40.387 回答