Mysql 运算符和“之间的SQL差异”&燃气轮机=&引用&&引用<=&引用;操作人员

Mysql 运算符和“之间的SQL差异”&燃气轮机=&引用&&引用<=&引用;操作人员,mysql,sql,oracle,Mysql,Sql,Oracle,我们使用SQL查询在dateFrom和dateTo字段的基础上进行搜索。为此,我使用了“大于等于(>=)”和“小于等于(&否”,因此没有区别(使用ORACLE时),但使用BETWEEN运算符是比较范围值的更优雅的方式。没有区别 (x BETWEEN y AND z) 和写作一样 ((x >= y) AND (x <= z)) ((x>=y)和(x现代数据库附带非常智能的查询执行优化程序。它们的主要功能之一是查询转换。逻辑上等价的表达式通常可以相互转换。例如,正如Anthony所建

我们使用SQL查询在dateFrom和dateTo字段的基础上进行搜索。为此,我使用了“大于等于(>=)”和“小于等于(&否”,因此没有区别(使用ORACLE时),但使用BETWEEN运算符是比较范围值的更优雅的方式。

没有区别

(x BETWEEN y AND z)
和写作一样

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

((x>=y)和(x现代数据库附带非常智能的查询执行优化程序。它们的主要功能之一是查询转换。逻辑上等价的表达式通常可以相互转换。例如,正如Anthony所建议的,Oracle(和MySQL)可以重写
BETWEEN
运算符作为两个
连接的比较,反之亦然,如果
之间的
不仅仅是作为语法糖实现的

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

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

注意:逻辑上等价的东西并不总是显而易见的。查询转换规则在转换
存在
中,
不存在
不在
中时会变得更复杂。但在这种情况下,它们是。有关详细信息,请阅读规范(第8.3章):


您使用的是哪家数据库供应商?这很重要。@j.w.r我在开发中使用MYSQL,在生产中使用的是Oracle。Informix、DB2、PostreSQL、MYSQL、Sqlite、MS Sql Server、Oracle……都包括在内,但我可以发誓有一家在某一点上没有。因此,正如其他人所指出的,您应该很好。:)@Mahendra,我出于个人原因很好奇:这个开发过程对您来说是如何工作的?您是否省略了任何特定于供应商的功能,包括内置函数、存储过程等?@j.w.r“我可以发誓有一个在某一点上不存在”——如果是这样,它将与SQL-92标准背道而驰。