BETWEEN AND 是SQL中用于查询字段值是否在指定闭区间内的操作符,等价于“>= AND

在SQL中,BETWEEN AND 用于查询某个字段值是否落在指定的闭区间内,即包含边界值。它的语法简洁、语义清晰,是处理范围条件的常用方式。
基本语法与执行逻辑
BETWEEN AND 是一个闭区间操作符,等价于用 >= 和 组合的条件表达式:
-
column BETWEEN a AND b等同于column >= a AND column - 要求
a ,否则结果恒为 false(多数数据库如 MySQL、PostgreSQL、SQL Server 均如此) - 支持数值、日期、字符串等多种可比较数据类型
常见使用示例
假设有一张 orders 表,含字段 order_id、amount、order_date:
- 查金额在 100 到 500 元之间的订单:
WHERE amount BETWEEN 100 AND 500 - 查 2024 年第一季度的订单(日期型):
WHERE order_date BETWEEN '2024-01-01' AND '2024-03-31' - 查姓名以字母 A–M 开头的用户(字符串按字典序比较):
WHERE last_name BETWEEN 'A' AND 'M'(注意:该写法仅匹配首字母,且不包含 'M' 之后的变体如 'Ma';更稳妥建议用LIKE或函数处理)
注意事项与易错点
使用 BETWEEN AND 时需特别留意以下细节:
- 边界值会被包含——这是“闭区间”的核心特征,无需额外加等号
- 若参数顺序颠倒(如
BETWEEN 500 AND 100),绝大多数数据库返回空结果,不会自动交换大小 - 对日期时间类型,注意是否包含时分秒;例如
'2024-03-31'在某些数据库中默认为'2024-03-31 00:00:00',可能漏掉当天其他时间的数据,建议显式写成'2024-03-31 23:59:59'或改用配合下一日开头 - NULL 值不会被匹配——因为
NULL BETWEEN x AND y的结果是 UNKNOWN,不满足 WHERE 条件
替代写法与适用场景
虽然 BETWEEN AND 简洁,但某些情况更适合显式比较:
- 需要开区间或半开区间时(如
>= a AND ),不能直接用 BETWEEN - 边界值来自计算或子查询,且可能为 NULL,需额外判断,此时拆解条件更可控
- 想提高可读性或兼容老旧系统(极少数方言不支持 BETWEEN),可用等价的 AND 表达式代替










