Skip to content

SQL BETWEEN

SQL BETWEEN 运算符用于在 WHERE 子句中指定一个范围,当列的值在指定范围内时,就返回该记录。BETWEEN 运算符包括开始值和结束值。

BETWEEN 语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

NOT BETWEEN 语法

使用 NOT BETWEEN 可以查询列的值不在指定范围内的记录:

sql
SELECT column1, column2, ...
FROM table_name
WHERE column_name NOT BETWEEN value1 AND value2;

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三

示例 1:使用 BETWEEN 查询年龄在指定范围内的学生

查询年龄在 17 到 19 之间的学生:

sql
SELECT * FROM students WHERE age BETWEEN 17 AND 19;

结果:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
5钱七18高三

示例 2:使用 NOT BETWEEN 查询年龄不在指定范围内的学生

查询年龄不在 17 到 19 之间的学生:

sql
SELECT * FROM students WHERE age NOT BETWEEN 17 AND 19;

结果:

idnameagegrade
4赵六16高一

示例 3:使用 BETWEEN 查询日期范围

假设我们有一个名为 orders 的表,包含以下数据:

order_idcustomer_nameorder_dateamount
1张三2023-01-01100
2李四2023-01-15200
3王五2023-02-01150
4赵六2023-02-15300
5钱七2023-03-01250

查询 2023 年 1 月 1 日到 2023 年 2 月 1 日之间的订单:

sql
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-02-01';

结果:

order_idcustomer_nameorder_dateamount
1张三2023-01-01100
2李四2023-01-15200
3王五2023-02-01150

示例 4:使用 BETWEEN 查询字符串范围

查询名字在 '李' 到 '赵' 之间的学生(按字典顺序):

sql
SELECT * FROM students WHERE name BETWEEN '李' AND '赵';

结果:

idnameagegrade
2李四17高二
3王五19高三

注意事项

  1. 包含边界值:BETWEEN 运算符包括开始值和结束值,即 BETWEEN a AND b 等价于 >= a AND <= b

  2. 值的顺序:在使用 BETWEEN 时,开始值必须小于或等于结束值,否则将不会返回任何结果。

  3. 数据类型:BETWEEN 运算符可以用于数值、日期和字符串类型的列,但需要确保值的类型与列的类型匹配。

  4. 日期格式:在查询日期范围时,需要注意日期格式,不同的数据库系统可能有不同的日期格式要求。

  5. 性能考虑:对于有索引的列,使用 BETWEEN 运算符通常可以利用索引,提高查询性能。

小结

SQL BETWEEN 运算符是一种用于指定范围的简洁方法,它可以使查询语句更简洁、更易读。当需要查询某个范围内的值时,使用 BETWEEN 运算符通常比使用 >=<= 条件更方便。