我们正在使用SQL查询来根据dateFrom和dateTo字段进行搜索。为此,我使用“大于等于(>=)”和“小于等于(<=)”运算符来搜索日期字段。在某些地方,我还发现我们也可以使用SQL“Between”运算符来完成相同的操作。只想确认当我们使用“Between”运算符和使用“(>= & <=)”运算符时是否有任何区别。
没有区别。
(x BETWEEN y AND z)
这与编写以下内容相同
((x >= y) AND (x <= z))
在使用ORACLE时,实际上没有什么区别,但使用BETWEEN运算符更优雅地比较范围内的值。
BETWEEN
操作符重写为两个通过AND
连接的比较,反之亦然,如果BETWEEN
不仅仅是实现为语法糖。因此,即使在性能上存在差异,您也可以放心,Oracle很可能会选择更好的选项。这意味着您可以自由选择您的首选项,例如可读性。EXISTS
、IN
、NOT EXISTS
、NOT IN
等时,查询转换规则变得更加复杂。但在这种情况下,它们是等价的。有关更多详细信息,请阅读规范(第8.3章介于谓词):http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt。
BETWEEN
行为的警告。很奇怪。 - j.w.r