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 ▶️

相关推荐
IvorySQL16 小时前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
ltl17 小时前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
灯澜忆梦18 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
C++ 老炮儿的技术栈20 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客20 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
zt1985q21 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL1 天前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃1 天前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo80971 天前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat1 天前
MySQL回表机制解析与优化策略
数据库·sql