BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SQL BETWEEN 语法
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
BETWEEN 示例
演示数据库
在猿变手册教程中,我们将使用 yuanbian 样本数据库。
下面是选自 "articles" 表的数据:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
BETWEEN 示例
下面的 SQL 语句选取 id 介于 2 和4 之间的所有网站:
SELECT * FROM articles
WHERE id BETWEEN 2 AND 4;
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
+----+--------------+----------+--------+---------------------+
NOT BETWEEN 示例
NOT BETWEEN 是 BETWEEN的反选:
SELECT * FROM articles
WHERE id not BETWEEN 2 AND 4;
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
BETWEEN 文本值
文本值由文本值之间大小(ascii码值)来选择范围,汉字的顺序通常没有意义,所以文本值一般用于字母字符串
下面的 SQL 语句选取 title 以介于 'A' 和 'H' 之间字母开始的所有文章:
SELECT * FROM articles
WHERE title BETWEEN 'A' AND 'H';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
BETWEEN 日期值
日期值应该是合法的日期值
下面的 SQL 语句选取 date 介于 '2003-01-01' 和 '2003-05-01' 之间的所有访问记录:
SELECT * FROM articles
WHERE id not BETWEEN '2003-01-01' AND '2003-05-01';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
+----+--------------+----------+--------+---------------------+
BETWEEN注意事项
- 请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
- 1. 在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。(开区间)
- 2. 在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。(闭区间)
- 3. 在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。(半开区间)
因此,请检查您的数据库是如何处理 BETWEEN 操作符!
讨论区