摘要:在本教程中,您将学习如何使用MySQL BETWEEN运算符确定值是否在一个值范围内。
MySQL BETWEEN运算符简介
BETWEEN AND判断某字段值是否在给定的范围内
。我们经常在SELECT,INSERT,UPDATE和DELETE语句的WHERE子句中使用BETWEEN运算符。
下面说明了BETWEEN
运算符的语法:
expr [NOT] BETWEEN begin_expr AND end_expr;
expr 是一个表达式,它用于测试值是否在定义的范围begin_expr
和 end_expr
之间。
expr, begin_expr和end_expr必须具有相同的数据类型。
如果 expr 的值大于或等于(>=)begin_expr 的值并且小于或等于(<=)end_expr 的值则返回 true,否则返回 0 。
在NOT BETWEEN运算符中,如果expr的值小于(<)begin_expr 表达式的值或大于 end_expr 的值则返回 true,否则返回 0 。
如果任何表达式为NULL,则BETWEEN
运算符返回NULL值。
如果要指定排除范围,则使用大于(>)和小于(<)运算符。
MySQL BETWEEN示例
我们练习一些使用BETWEEN
运算符的例子。
MySQL BETWEEN与数字示例
请参阅示例数据库中的下products
表:
假设你想查找价格在90到100之间的产品,您可以使用BETWEEN
运算符。如:
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice BETWEEN 90 AND 100;
结果如下:
您也可以使用大于或等于(>=
)和小于或等于(<=
)运算符实现相同的结果:
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice >= 90 AND buyPrice <= 100;
要查找购买价格不在20美元和100美元之间的产品,可以使用NOT BETWEEN AND :
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice NOT BETWEEN 20 AND 100;
结果如下:
以上sql语句也可以使用小于(>),大于(>)和逻辑运算符(AND)实现同样的查询结果, 如:
SELECT
productCode, productName, buyPrice
FROM
products
WHERE
buyPrice < 20 OR buyPrice > 100;
MySQL BETWEEN与日期示例
当使用带有日期值的BETWEEN
运算符时,为了获得最佳结果,应使用类型强制转换将列或表达式的类型显式转换为DATE类型。
例如,要获取所需日期为01/01/2003至01/31/2003的订单,请使用以下查询:
SELECT orderNumber,
requiredDate,
status
FROM orders
WHERE requireddate
BETWEEN CAST('2003-01-01' AS DATE)
AND CAST('2003-01-31' AS DATE);
结果如下:
因为日期字段的数据类型是DATE
,所以我们使用cast操作符将字符串“2003-01-01”和“2003-12-31”转换为DATE
数据类型。
MySQL BETWEEN AND边界值问题分析
mysql的sql语句中可以使用between来限定一个数据的范围,例如:
select * from user where userId between 5 and 7;
查询userId为5、6,7的user,userId范围是包含边界值的,也等同如下查询:
select * from user where userId >= 5 and userId <= 7;
很多地方都提到between是给定的范围是大于等第一值,小于第二个值,其实这是不对的。此前我一直也是这么认为,通过实验,结论是包含两边的边界值,如果实在拿不准,可以采用>= 、<=的方式来指定条件。
另外 not between的范围是不包含边界值
文章评论