括号中的单个SQL条件
我正在重构一些包含大量条件的旧oracle sql语句。有些是放在括号内的单一条件。现在,括号对单个条件重要吗?下面两个例子之间有区别吗 例1括号中的单个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
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
据我所知,没有任何语义差异
根据我的经验,这通常是
- 某种旧情况的遗迹(可能是过去某个地方的
或
在该括号中)或
- 这就是开发人员在这方面工作的风格
在一起使用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。但是,请注意,当您同时使用其他逻辑运算符(如或..)时,您需要括号,但即使不需要逻辑,也不能依赖数据库来期望应用适当的行为。当然,当你训练时,他们也会露出丑陋的面孔,他们不知道如何运用逻辑。由于缺少括号,你会得到一些不可靠的结果集。