SQL中Between运算符与">="和"<="运算符的区别

5
我们正在使用SQL查询来根据dateFrom和dateTo字段进行搜索。为此,我使用“大于等于(>=)”和“小于等于(<=)”运算符来搜索日期字段。在某些地方,我还发现我们也可以使用SQL“Between”运算符来完成相同的操作。只想确认当我们使用“Between”运算符和使用“(>= & <=)”运算符时是否有任何区别。

1
你使用哪个数据库供应商?这很重要。 - j.w.r
@j.w.r 我在开发中使用MYSQL,而在生产环境中则使用Oracle。 - Mahendra Athneria
Informix、DB2、PostgreSQL、MySQL、Sqlite、MS Sql Server、Oracle……都包括在内,但我敢肯定曾经有一个不包括。所以,正如其他人所指出的,你应该没问题。 :) - j.w.r
@onedaywhen -- 是的,我的记忆有误!实际上,我现在记得曾经在www.w3schools.com看到过一次关于BETWEEN行为的警告。很奇怪。 - j.w.r
@j.w.r 很有趣,他们只是说“一些数据库,其他一些数据库”,而不是像可靠的来源那样实际进行工作并检查它。我想这又是一个适合 http://w3fools.com/ 的例子。 - Lukas Eder
显示剩余3条评论
3个回答

5

没有区别。

(x BETWEEN y AND z)

这与编写以下内容相同

((x >= y) AND (x <= z))

3

在使用ORACLE时,实际上没有什么区别,但使用BETWEEN运算符更优雅地比较范围内的值。


3
现代数据库配备了非常智能的查询执行优化器,其中一个主要特点是查询转换。 通常可以将具有逻辑等价性的表达式相互转换。例如,正如Anthony所建议的那样,Oracle(和MySQL)可以将BETWEEN操作符重写为两个通过AND连接的比较,反之亦然,如果BETWEEN不仅仅是实现为语法糖。因此,即使在性能上存在差异,您也可以放心,Oracle很可能会选择更好的选项。这意味着您可以自由选择您的首选项,例如可读性。
注意:逻辑等价的内容并不总是明显的。当涉及到转换EXISTSINNOT EXISTSNOT IN等时,查询转换规则变得更加复杂。但在这种情况下,它们是等价的。有关更多详细信息,请阅读规范(第8.3章介于谓词):http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接