Skip to content

SQL Between

SQL BETWEEN 操作符:选择范围内的值

Section titled “SQL BETWEEN 操作符:选择范围内的值”

BETWEEN 操作符用于 WHERE 子句,以选择落在指定范围内的值。这个范围包含起始值和结束值。

BETWEEN 操作符允许你根据列值是否大于等于最小值且小于等于最大值来过滤数据。它可以用于数字、文本(字符串)值和日期。

column_name BETWEEN value1 AND value2 等同于 column_name >= value1 AND column_name <= value2。

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN lower_bound AND upper_bound;

我们将使用 Northwind 示例数据库。

下面是 “Products” 表中的部分选取内容:

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18.00

2 Chang 1 1 24 - 12 oz bottles 19.00

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10.00

4 Chef Anton’s Cajun Seasoning 2 2 48 - 6 oz jars 22.00

5 Chef Anton’s Gumbo Mix 2 2 36 boxes 21.35

以下 SQL 语句选取价格在 $10 到 $20 之间(含边界值)的所有产品:

SELECT ProductName, Price
FROM Products
WHERE Price BETWEEN 10.00 AND 20.00
ORDER BY Price;

要显示特定范围之外的产品,请使用 NOT BETWEEN:

SELECT ProductName, Price
FROM Products
WHERE Price NOT BETWEEN 10.00 AND 20.00
ORDER BY Price;

结合 IN 使用 BETWEEN 操作符示例(组合条件)

Section titled “结合 IN 使用 BETWEEN 操作符示例(组合条件)”

以下 SQL 语句选取价格在 $10 到 $20 之间,但排除 CategoryID 为 1、2 或 3 的产品:

SELECT ProductName, Price, CategoryID
FROM Products
WHERE (Price BETWEEN 10.00 AND 20.00)
AND CategoryID NOT IN (1, 2, 3)
ORDER BY Price;

结合文本值使用 BETWEEN 操作符示例

Section titled “结合文本值使用 BETWEEN 操作符示例”

当用于文本时,BETWEEN 基于字母顺序工作。以下 SQL 语句选取 ProductName 字母顺序介于 ‘C’ 和 ‘M’ 之间(包含 ‘C’,但不包含以 ‘N’ 开头的名称)的所有产品。

SELECT ProductName
FROM Products
WHERE ProductName BETWEEN 'C' AND 'Mzzzzzz' -- To include all names starting with M
ORDER BY ProductName;

更精确地选取以 C 开头到 M 开头(包含 M)的名称:

SELECT ProductName
FROM Products
WHERE ProductName >= 'C' AND ProductName < 'N'
ORDER BY ProductName;

或者,如果你严格指名称以字母 C 到 M 开头的产品:

SELECT ProductName
FROM Products
WHERE SUBSTRING(ProductName, 1, 1) BETWEEN 'C' AND 'M'
ORDER BY ProductName;

下面是包含 OrderDate 列的 “Orders” 表中的部分选取内容:

OrderID CustomerID EmployeeID OrderDate ShipperID

10248 90 5 1996-07-04 3

10249 81 6 1996-07-05 1

10250 34 4 1996-07-08 2

10251 84 3 1996-07-09 1

10252 76 4 1996-07-10 2

结合日期值使用 BETWEEN 操作符示例

Section titled “结合日期值使用 BETWEEN 操作符示例”

以下 SQL 语句选取 OrderDate 在 1996 年 7 月 4 日至 1996 年 7 月 9 日之间(含边界值)的所有订单。请注意标准的 ISO 8601 日期格式(‘YYYY-MM-DD’)。

SELECT OrderID, CustomerID, OrderDate
FROM Orders
WHERE OrderDate BETWEEN '1996-07-04' AND '1996-07-09'
ORDER BY OrderDate;

数据库行为:标准 SQL 规定 BETWEEN 是包含边界值的。大多数现代、符合标准的数据库系统都遵循此标准。如果你遇到意外的行为,特别是使用较旧的系统时,请查阅其文档;但通常情况下,X BETWEEN Y AND Z 意味着 X >= Y AND X <= Z。

实际应用:BETWEEN 对于按日期范围(例如,本月销售额)、价格范围或任何具有逻辑顺序的数值或文本数据进行过滤非常有用。