Mysql基础教程(07):BETWEEN

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 是一个固定的连接词,用来连接 minmax
  • 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检索学生年龄位于1920之间的学生:

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)

因为MINMAX的值是包含的,所以查询的实际是学生年龄>=19且<=20之间的。

此 SQL 语句与下面不使用 BETWEEN 的语句的结果相同:

sql 复制代码
SELECT *
FROM students
WHERE age >= 19 AND age <= 20;

NOT BETWEEN

以下 SQL 语句使用 BETWEEN 运算符检索年龄不在1920之间的学生:

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 maxexpression >= min AND expression <= max 结果相同。
  • BETWEEN 运算符可以结合 NOT 运算符进行否定操作。
  • expression NOT BETWEEN min AND maxexpression < min OR expression > max 结果相同。

◀️ Mysql基础教程(06):NOT IN

Mysql基础教程(08):LIKE ▶️

相关推荐
马克Markorg4 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy6 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道8 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha8 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_8 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance8 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋8 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.9 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库