Oracle 9 と Oracle 10 の間で演算子の優先順位に関する重要な変更があるかどうかを知っている人はいますか?
AND / OR は、10 と比較して 9 では異なる扱いのようです。
Oracle 9 と Oracle 10 の間で演算子の優先順位に関する重要な変更があるかどうかを知っている人はいますか?
AND / OR は、10 と比較して 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 の優先順位が 2 番目に高く、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 が述べたように、これを変更するとあらゆる種類の問題が発生し、バージョン間で優先順位の違いに遭遇したことはありません。
しかし、特定のバグや、扱いが異なるまれなあいまいなステートメントがあったとしても、私は驚かないでしょう。