我们正在使用SQL查询来搜索dateFrom和dateTo字段。因为我使用“大于等于(> =)”和“小于等于(< =)”运算符来搜索日期字段。某处我也发现我们也可以使用SQL“ Between ”运算符来做同样的事情。只是想确认当我们使用“ ”运算符和我们使用“(> =&< =)”运算符时有什么不同。
答案 0 :(得分:5)
没有区别。
(x BETWEEN y AND z)
与写作相同
((x >= y) AND (x <= z))
答案 1 :(得分:3)
否则没有区别(使用ORACLE时)但使用BETWEEN运算符是比较范围值的更优雅的方法。
答案 2 :(得分:3)
现代数据库附带非常智能的查询执行优化器。它们的主要特征之一是查询转换。 逻辑上等效的表达式通常可以相互转换。例如正如Anthony建议的那样,BETWEEN
运算符可以被Oracle(和MySQL)重写为两个AND
- 连接的比较,反之亦然,如果BETWEEN
不仅仅是作为语法糖实现的话。
因此,即使存在性能差异,也可以确保Oracle很可能会选择更好的选择。
这意味着您可以自由选择偏好,例如因为可读性。
注意:它并不总是显而易见的,逻辑上等同于什么。在转换EXISTS
,IN
,NOT EXISTS
,NOT IN
时,查询转换规则会变得更加复杂......但在这种情况下,它们是。有关更多详细信息,请阅读规范(谓词之间的第8.3章):