SQL BETWEEN 操作符


BETWEEN 操作符

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SQL IN 语法

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

实例 1:

如需以字母顺序显示介于 "Adams"(包括)和 "Carter"(包括)之间的人,请使用下面的 SQL:

+----------+----------+-----------+----------------+----------+
| PersonID | LastName | FirstName | Address        | City     |
+----------+----------+-----------+----------------+----------+
|        1 | Adams    | John      | Oxford Street  | London   |
|        2 | Bush     | George    | Fifth Avenue   | New York |
|        3 | Carter   | Thomas    | Changan Street | Beijing  |
|        4 | Gates    | Bill      | Xuanwumen 10   | Beijing  |
+----------+----------+-----------+----------------+----------+
4 rows in set (0.00 sec)

mysql> select * from persons where lastname between 'adams' and 'carter';
+----------+----------+-----------+----------------+----------+
| PersonID | LastName | FirstName | Address        | City     |
+----------+----------+-----------+----------------+----------+
|        1 | Adams    | John      | Oxford Street  | London   |
|        2 | Bush     | George    | Fifth Avenue   | New York |
|        3 | Carter   | Thomas    | Changan Street | Beijing  |
+----------+----------+-----------+----------------+----------+

注意事项: 不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。

所以,请检查你的数据库是如何处理 BETWEEN....AND 操作符的!


实例 2:

如需使用上面的例子显示范围之外的人,请使用 NOT 操作符:

mysql> select * from persons where lastname not between 'adams' and 'carter';
+----------+----------+-----------+--------------+---------+
| PersonID | LastName | FirstName | Address      | City    |
+----------+----------+-----------+--------------+---------+
|        4 | Gates    | Bill      | Xuanwumen 10 | Beijing |
+----------+----------+-----------+--------------+---------+