我正在重构一些包含大量条件的旧 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
我正在重构一些包含大量条件的旧 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
您发布的两个示例之间没有区别。Oracle 查询从最后执行,即首先过滤您的 where 条件的最后一部分并返回,例如:- where 第一个过滤条件将是 b<>0 然后 A>5 ,依此类推。
将 AND 和 OR 运算符一起使用时使用括号是一种很好的做法,因为没有括号有时逻辑不清楚,否则只有 AND 运算符括号没有任何区别
据我所知,没有任何语义差异。
根据我的经验,这通常是
OR
过去某个地方在那个括号中)或在你只有 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
逻辑呢:如果你有一些 OR 逻辑,你确实需要括号,但在这种情况下(只有 AND)它没有意义。您可以删除查询中的所有括号。
如果我们再深入一点:查看解释查询分析,您会看到解释器自动放置括号,即使您错过了它。