MySQL BETWEEN
用法与实例
本文介绍了在 MySQL 数据库中,如何使用 BETWEEN 运算符确定一个值是否介于某两个值之间。
BETWEEN 运算符确定一个值是否介于某两个值之间。BETWEEN 运算符常用于比较数字和日期类型的数据。
MySQL BETWEEN
语法
BETWEEN 运算符是一个三目运算符,它需要 3 个操作数。下面 BETWEEN 运算符的语法:
sql
expression BETWEEN min AND max
expression NOT BETWEEN min AND max
使用说明:
- expression 可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。
- min 是范围的最小值
(包含)
。 - max 是范围的最大值
(包含)
。 - AND 是一个固定的连接词,用来连接
min
和max
。 - NOT 是否定运算符,NOT BETWEEN 表达的含义与 BETWEEN 相反。
BETWEEN 运算符相当于是下面写法的简写形式:
sql
expression >= min AND expression <= max
NOT BETWEEN 运算符相当于是下面写法的简写形式:
sql
expression < min OR expression > max
MySQL BETWEEN
运算规则
当字段的值或者给定的值介于 min 和 max 两个值之间时,BETWEEN 运算符返回 1。否则,返回 0。
BETWEEN 运算规则如下:
- 如果左侧的 expression 介于 min 和 max 之间时, BETWEEN 返回 1,否则返回 0。
sql
SELECT
1 BETWEEN 1 AND 3,
2 BETWEEN 1 AND 3,
3 BETWEEN 1 AND 3,
4 BETWEEN 1 AND 3;
sql
+-------------------+-------------------+-------------------+-------------------+
| 1 BETWEEN 1 AND 3 | 2 BETWEEN 1 AND 3 | 3 BETWEEN 1 AND 3 | 4 BETWEEN 1 AND 3 |
+-------------------+-------------------+-------------------+-------------------+
| 1 | 1 | 1 | 0 |
+-------------------+-------------------+-------------------+-------------------+
- 如果 expression, min, max 至少有一个 NULL 时, BETWEEN 运算符的返回 NULL。
sql
SELECT
NULL BETWEEN 1 AND 3,
1 BETWEEN NULL AND 3,
1 BETWEEN 1 AND NULL;
sql
+----------------------+----------------------+----------------------+
| NULL BETWEEN 1 AND 3 | 1 BETWEEN NULL AND 3 | 1 BETWEEN 1 AND NULL |
+----------------------+----------------------+----------------------+
| NULL | NULL | NULL |
+----------------------+----------------------+----------------------+
MySQL BETWEEN
实例
以下SQL 语句使用BETWEEN
检索学生年龄位于19
和20
之间的学生:
sql
SELECT *
FROM students
WHERE age BETWEEN 19 AND 20;
sql
+------------+--------+------+--------+
| student_id | name | age | gender |
+------------+--------+------+--------+
| 3 | 李总结 | 19 | 男 |
| 7 | 刘星 | 19 | 女 |
| 10 | 战书 | 19 | 男 |
| 12 | 赵云 | 20 | 男 |
+------------+--------+------+--------+
4 rows in set (0.00 sec)
因为MIN
和MAX
的值是包含的,所以查询的实际是学生年龄>=19且<=20
之间的。
此 SQL 语句与下面不使用 BETWEEN 的语句的结果相同:
sql
SELECT *
FROM students
WHERE age >= 19 AND age <= 20;
NOT BETWEEN
以下 SQL 语句使用 BETWEEN 运算符检索年龄不在19
和20
之间的学生:
sql
SELECT *
FROM students
WHERE age NOT BETWEEN 19 AND 20;
sql
+------------+--------+------+--------+
| student_id | name | age | gender |
+------------+--------+------+--------+
| 1 | 丁一 | 18 | 男 |
| 2 | 解放 | 18 | 男 |
| 4 | 周末离 | 18 | 女 |
| 5 | 谢村花 | 18 | 女 |
| 6 | 周一 | 18 | 女 |
| 8 | 夏雨 | 18 | 男 |
| 9 | 夏天 | 18 | 男 |
| 11 | 周易 | 18 | 女 |
+------------+--------+------+--------+
8 rows in set (0.00 sec)
此 SQL 语句与下面不使用 NOT BETWEEN 的语句的结果相同:
sql
SELECT *
FROM students
WHERE age < 19 OR age > 20;
这里,因为students
表中没有年龄大于20的学生,所以查询的结果中不包含年龄大于20的学生。
结论
本文通过实例介绍了 MySQL 中 BETWEEN 运算符的语法和用法。 BETWEEN 运算符的用法要点如下:
- BETWEEN 运算符来测试一个值是否位于一个数值区间或者时间区间内。
BETWEEN min AND max 中 min
是区间的最小值,max 是区间的最大值。expression BETWEEN min AND max
与expression >= min AND expression <= max
结果相同。- BETWEEN 运算符可以结合 NOT 运算符进行否定操作。
expression NOT BETWEEN min AND max
与expression < min OR expression > max
结果相同。