在 SQL 中,BETWEEN 操作符用于筛选某个范围内的数据。它可以用于数值、文本或日期。AND 关键字与 BETWEEN 一起使用,定义范围的上下限。
请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
请检查您的数据库是如何处理 BETWEEN 操作符!
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。
SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;
column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
table_name:要查询的表名称。
column:要查询的字段名称。
value1:范围的起始值。
value2:范围的结束值。
与 BETWEEN AND 相反,表示不在范围内的其他所有数据。
获取年龄在18-20岁之间的学生信息:
SELECT * FROM student WHERE age BETWEEN 18 AND 20;
获取出生日期在2006年-2024年之间的学生信息:
SELECT * FROM student WHERE birth_time BETWEEN "2006-1-1" AND "2024-12-31";
你也可以使用 BETWEEN 来进行字符串的字典顺序范围比较。比如,假设你有一个 Employees 表,其中有一个 last_name 列(姓氏列),你想找到所有姓氏在字母 "A" 到 "M" 之间的员工:
SELECT employee_id, last_name FROM Employees WHERE last_name BETWEEN "A" AND "M";
这将返回所有姓氏首字母在 "A" 到 "M" 之间(包括 "A" 和 "M")的员工。
获取年龄不在18-20岁的学生信息:
SELECT * FROM student WHERE age NOT BETWEEN 18 AND 20;
需要注意,不同的数据库,对 BETWEEN AND 是否包含边界的定义不一致。
BETWEEN 的范围是有顺序要求的。例如,上面示例中,如果改成 BETWEEN 20 AND 18,返回的结果集为空 。
SELECT * FROM student WHERE age BETWEEN 20 AND 18;
确保列的数据类型与你比较的值的数据类型相符。例如,不要将日期与字符串进行比较。