括号中的单个SQL条件

括号中的单个SQL条件,sql,Sql,我正在重构一些包含大量条件的旧oracle sql语句。有些是放在括号内的单一条件。现在,括号对单个条件重要吗?下面两个例子之间有区别吗 例1 WHERE ( A = B AND B = C ) AND ( A > 5 ) AND ( B <> 0 ) 在哪里 ( A=B B=C ) 和(A>5) 及(b0) 例2 WHERE ( A = B AND B = C ) AND A > 5

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

例1

WHERE
  (
         A = B
     AND B = C
  )
  AND ( A > 5 )
  AND ( B <> 0 )
在哪里
(
A=B
B=C
)
和(A>5)
及(b0)
例2

WHERE
  (
         A = B
     AND B = C
  )
  AND A > 5
  AND B <> 0
在哪里
(
A=B
B=C
)
A>5
和b0

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

根据我的经验,这通常是

  • 某种旧情况的遗迹(可能是过去某个地方的
    在该括号中)或
  • 这就是开发人员在这方面工作的风格

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


在一起使用AND和OR运算符时使用括号是一种很好的做法,因为如果没有括号,那么逻辑往往不清楚,否则使用only AND运算符括号没有任何区别。

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


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

所有内容都是相同的,直到您只有和为止。但是如果你有其他的操作员,那么问题就来了

示例1

WHERE
  (
         A = B
     AND B = C
  )
  AND ( A > 5 )
  AND ( B <> 0 )
在哪里
(
A=B
B=C
)
和(A>5)
及(b0)
示例2

WHERE
  (
         A = B
     AND B = C
  )
  AND A > 5
  AND B <> 0
在哪里
(
A=B
B=C
)
A>5
和b0
示例3

WHERE
      A = B
  AND B = C
  AND A > 5
  AND B <> 0
在哪里
A=B
B=C
A>5
和b0

none,实际上你甚至可以说A=B和B=C,A>5和b0。但是,请注意,当您同时使用其他逻辑运算符(如或..)时,您需要括号,但即使不需要逻辑,也不能依赖数据库来期望应用适当的行为。当然,当你训练时,他们也会露出丑陋的面孔,他们不知道如何运用逻辑。由于缺少括号,你会得到一些不可靠的结果集。