2012-04-26 7 views
6

私は常にSQLクエリで角括弧を使います。しかし、私は例があります。PostgreSQLとブラケット

DELETE FROM prog 
WHERE (prog_start >= $1 AND prog_start < $2) 
    OR (prog_end > $1 AND prog_end <= $2) 

かどうか:

DELETE FROM prog 
WHERE prog_start >= $1 AND prog_start < $2 
    OR prog_end > $1 AND prog_end <= $2 

はそれに等しいですか?

答えて

8

これは、言語の「論理演算子の優先順位」に依存します。 PostgreSQLの

、AND演算子は、だからあなたの場合には、結果は同じになります

上でOR演算子優先されます。

しかし、私はそれがはるかに簡単で、括弧を入れてクリア(メンテナンス!)だと思います。

1

オペレータの納得度は http://www.postgresql.org/docs/6.5/static/operators.htm#AEN1615になります。

複雑な条件を作成するには、条件をかっこにする方がよいでしょう。

+0

良い分析ですが、この特定のケースでは間違った結論はありませんか? –

+1

6.5は少し古いバージョンです。 – vyegorov

+1

http://www.postgresql.org/docs/9.0/static/sql-syntax-lexical.html#SQL-SYNTAX-OPERATORS (および/または演算子の優先順位の変更は、おそらく最も一般的な変更ではありません。 ..) –

関連する問題