Oracle 9中的运算符优先级

时间:2012-07-13 21:23:20

标签: oracle

有谁知道Oracle 9和Oracle 10之间是否存在关于运营商优先级的重大变化?

与p相比,

AND / OR似乎在9中被区别对待。

2 个答案:

答案 0 :(得分:2)

9I和10G都有AND作为优先级比OR(根据这些URL)

此URL列出了PL / SQL编译器中的一些更改 评估,但更改与AND或OR无关: http://oraclefunda.wordpress.com/2008/06/18/plsql-enhancements-in-oracle-database-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

答案 1 :(得分: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所提到的,改变这种情况会导致各种各样的问题,而且我从未遇到版本之间的优先级差异。

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