SQL与运算符和“> =”之间的差异& “< =”运算符

时间:2011-06-15 07:18:18

标签: mysql sql oracle

我们正在使用SQL查询来搜索dateFrom和dateTo字段。因为我使用“大于等于(> =)”和“小于等于(< =)”运算符来搜索日期字段。某处我也发现我们也可以使用SQL“ Between ”运算符来做同样的事情。只是想确认当我们使用“ ”运算符和我们使用“(> =&< =)”运算符时有什么不同。

3 个答案:

答案 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很可能会选择更好的选择。

这意味着您可以自由选择偏好,例如因为可读性。

注意:它并不总是显而易见的,逻辑上等同于什么。在转换EXISTSINNOT EXISTSNOT IN时,查询转换规则会变得更加复杂......但在这种情况下,它们是。有关更多详细信息,请阅读规范(谓词之间的第8.3章):

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt