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