SQL的BETWEEN是闭区间,包含左右边界值;例如WHERE age BETWEEN 18 AND 25等价于WHERE age >= 18 AND age

是的,SQL 的 BETWEEN 是闭区间,包含左右两个边界值。
什么是闭区间?
闭区间表示范围包含起始值和结束值。例如 WHERE age BETWEEN 18 AND 25 等价于 WHERE age >= 18 AND age ,会匹配 age = 18 和 age = 25 的所有记录。
边界验证方法
可以通过构造明确的边界测试数据来验证:
- 插入三条测试数据:值为边界左值(如 18)、边界右值(如 25)、以及刚好越界(如 17 或 26)
- 执行
BETWEEN查询,观察结果是否包含左右边界值 - 对比等价写法:
BETWEEN a AND b与>= a AND 应返回完全相同的结果集
注意事项
虽然语义上是闭区间,但实际结果还受数据类型和比较规则影响:
- 字符串比较依赖排序规则(collation),例如大小写敏感时
'Apple' BETWEEN 'apple' AND 'banana'可能不成立 - 日期时间类型要注意精度,
'2023-01-01' BETWEEN '2023-01-01' AND '2023-01-01'成立,但'2023-01-01 12:00' BETWEEN '2023-01-01' AND '2023-01-01'可能不成立(因隐式转换或截断) - NULL 值不会被匹配:任何与 NULL 的比较(包括 BETWEEN 中的边界或字段值)都会返回 UNKNOWN,该行被排除
反向验证:用 NOT BETWEEN
NOT BETWEEN a AND b 等价于 b,即排除闭区间内所有值(含边界)。如果某值等于 a 或 b,它一定不会出现在 NOT BETWEEN 结果中——这也从反面印证了 BETWEEN 的闭区间特性。










