括号中的单个SQL条件

时间:2013-11-06 09:09:35

标签: sql

我正在重构一些包含大量条件的旧oracle sql语句。有些是放在括号内的单一条件。现在,括号对单一条件是否重要?以下两个例子之间有区别吗?

示例1

WHERE
  (
         A = B
     AND B = C
  )
  AND ( A > 5 )
  AND ( B <> 0 )

示例2

WHERE
  (
         A = B
     AND B = C
  )
  AND A > 5
  AND B <> 0

4 个答案:

答案 0 :(得分:1)

据我所知,没有任何语义差异。

根据我的经验,这通常是

  • 某个旧情况的遗物(可能是OR在过去某处的那个括号中)或
  • 只是开发工作的风格。

答案 1 :(得分:1)

您发布的两个示例之间没有区别。 Oracle查询从最后执行,即你的where条件的最后一部分首先被过滤并运行,例如: - 其中第一个过滤条件是b&lt;&gt; 0然后A&gt; 5,依此类推。

使用AND和OR运算符一起使用括号时的好习惯没有括号soemtimes逻辑不清楚,否则只有AND运算符括号没有任何区别

答案 2 :(得分:0)

逻辑怎么样:如果你有一些OR逻辑,你确实需要括号,但在这种情况下(只有AND)它没有任何意义。您可以删除查询中的所有括号。

如果我们要深入了解:查看解释查询分析,您可以看到解释器会自动放置括号,即使您错过了它。

答案 3 :(得分:0)

在你只有AND之前一切都是一样的。但是,如果你有任何其他运营商,那么问题是precedence

示例1

WHERE
  (
         A = B
     AND B = C
  )
  AND ( A > 5 )
  AND ( B <> 0 )

示例2

WHERE
  (
         A = B
     AND B = C
  )
  AND A > 5
  AND B <> 0

示例3

WHERE
      A = B
  AND B = C
  AND A > 5
  AND B <> 0