1

我正在重构一些包含大量条件的旧 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

4 回答 4

1

您发布的两个示例之间没有区别。Oracle 查询从最后执行,即首先过滤您的 where 条件的最后一部分并返回,例如:- where 第一个过滤条件将是 b<>0 然后 A>5 ,依此类推。

将 AND 和 OR 运算符一起使用时使用括号是一种很好的做法,因为没有括号有时逻辑不清楚,否则只有 AND 运算符括号没有任何区别

于 2013-11-06T09:16:19.317 回答
1

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

根据我的经验,这通常是

  • 一些旧条件的遗物(也许OR过去某个地方在那个括号中)或
  • 只是开发人员在这方面工作的风格。
于 2013-11-06T09:15:04.693 回答
0

在你只有 AND 之前,一切都是一样的。但是,如果您有任何其他运算符,那么就会出现优先级问题。

示例 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
于 2013-11-06T09:19:34.057 回答
0

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

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

于 2013-11-06T09:18:11.630 回答