SQL与运算符和"> ="&"<="运算符之间的区别

Mah*_*ria 5 mysql sql oracle

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

Ant*_*ull 5

没有区别.

(x BETWEEN y AND z)
Run Code Online (Sandbox Code Playgroud)

和写作一样

((x >= y) AND (x <= z))
Run Code Online (Sandbox Code Playgroud)


Luk*_*der 3

现代数据库配备了非常智能的查询执行优化器。它们的主要功能之一是查询转换。逻辑上等价的表达式通常可以相互转换。例如,正如 Anthony 所建议的,如果不只是将运算符实现为语法糖,BETWEEN则 Oracle(和 MySQL)可以将运算符重写为两个AND连接的比较,反之亦然。BETWEEN

因此,即使存在差异(性能方面),您也可以放心,Oracle 很可能会选择更好的选项。

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

注意:逻辑上等价的东西并不总是显而易见的。当涉及到转换EXISTS, IN, NOT EXISTS, NOT IN... 时,查询转换规则变得更加复杂,但在本例中,它们确实如此。有关更多详细信息,请阅读规范(第 8.3 章谓词之间):

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