BETWEEN操作符用于选取闭区间内的数据,包括起始值和结束值,可应用于数字、日期或字符串字段,语法为column_name BETWEEN value1 AND value2,等价于column_name >= value1 AND column_name

在MySQL中,BETWEEN 操作符用于选取介于两个值之间的数据范围。这个范围包括起始值和结束值,也就是说它是闭区间查询(包含两端的值)。BETWEEN 常用于数字、日期或字符串类型的字段范围筛选,语法简洁且效率较高。
基本语法结构
column_name BETWEEN value1 AND value2
等价于:
column_name >= value1 AND column_name
其中 value1 是下限,value2 是上限,且必须满足 value1 ≤ value2,否则不会返回任何结果。
数字范围查询示例
假设有一个学生表 students,包含字段 score 表示成绩,你想查询成绩在 75 到 90 之间的所有学生:
SELECT * FROM students WHERE score BETWEEN 75 AND 90;
这条语句会返回 score ≥ 75 且 score ≤ 90 的所有记录。
日期范围查询用法
对于日期类型字段,BETWEEN 同样适用。例如查询某段时间内注册的用户:
SELECT * FROM users WHERE register_date BETWEEN '2024-01-01' AND '2024-12-31';
这将选出 2024 年全年注册的所有用户。注意日期要用单引号包裹,并使用标准格式 YYYY-MM-DD。
字符串范围查询注意事项
BETWEEN 也可用于字符串,按字典顺序比较。例如查询姓名在 "Alice" 到 "David" 之间的用户:
SELECT * FROM users WHERE name BETWEEN 'Alice' AND 'David';
但要注意,字符串比较受排序规则(collation)影响,比如大小写是否敏感。建议在使用前确认字符集和排序规则,避免遗漏数据。
使用 NOT BETWEEN 排除范围
如果想查询不在某个范围内的数据,可以加上 NOT:
SELECT * FROM students WHERE score NOT BETWEEN 60 AND 100;
这条语句会返回成绩低于 60 或高于 100 的记录(通常用于查找不及格或异常值)。
常见问题与建议
- 确保范围值的数据类型与字段一致,避免隐式转换导致性能下降或结果错误。
- 在日期查询中,如果字段包含时间部分(datetime),而你只想查某一天,建议使用 >= 和 WHERE created_time >= '2024-05-01' AND created_time
- BETWEEN 在索引字段上表现良好,合理使用可提升查询效率。
基本上就这些。掌握 BETWEEN 的用法,能让你更高效地处理范围筛选场景,无论是数值、日期还是文本数据。










