摘要:在本教程中,您将学习如何使用 MySQL BETWEEN
运算符来确定某个值是否在某个值范围内。
MySQL BETWEEN 运算符简介
BETWEEN
运算符是逻辑运算符,用于指定值是否在范围内。以下是BETWEEN
运算符的语法:
value BETWEEN low AND high;
Code language: SQL (Structured Query Language) (sql)
如果满足以下条件, BETWEEN
运算符将返回 1:
value >= low AND value <= high
Code language: SQL (Structured Query Language) (sql)
否则,返回 0。
如果value
low
或high
为NULL
,则BETWEEN
运算符将返回NULL
。
例如,以下语句返回 1,因为 15 介于 10 和 20 之间:
SELECT 15 BETWEEN 10 AND 20;
Code language: SQL (Structured Query Language) (sql)
以下示例返回 0,因为 15 不在 20 和 30 之间:
SELECT 15 BETWEEN 20 AND 30;
Code language: SQL (Structured Query Language) (sql)
请注意,MySQL 将 1 视为 true,将 0 视为 false。
不在之间
要对BETWEEN
运算符求反,可以使用NOT
运算符:
value NOT BETWEEN low AND high
Code language: SQL (Structured Query Language) (sql)
NOT BETWEEN
运算符在以下情况下返回 1:
value < low OR value > high
Code language: SQL (Structured Query Language) (sql)
否则,返回 0。
例如,以下语句返回 0,因为 15 不在 10 和 20 之间,则不成立:
SELECT 15 NOT BETWEEN 10 AND 20;
Code language: SQL (Structured Query Language) (sql)
实际上,您将在SELECT
、 UPDATE
和DELETE
语句的WHERE
子句中使用BETWEEN
运算符。
MySQL BETWEEN 运算符示例
让我们通过一些使用BETWEEN
运算符的示例来练习。
1) 使用 MySQL BETWEEN 与数字示例
请参阅示例数据库中的以下products
表:

以下示例使用BETWEEN
运算符查找购买价格在90
到100
之间的产品:
SELECT
productCode,
productName,
buyPrice
FROM
products
WHERE
buyPrice BETWEEN 90 AND 100;
Code language: SQL (Structured Query Language) (sql)

此查询使用大于或等于(>=
) 和小于或等于 ( <=
) 运算符而不是BETWEEN
运算符来获得相同的结果:
SELECT
productCode,
productName,
buyPrice
FROM
products
WHERE
buyPrice >= 90 AND buyPrice <= 100;
Code language: SQL (Structured Query Language) (sql)
要查找购买价格不在 $20 到 $100 之间的产品,请使用NOT BETWEEN
运算符,如下所示:
SELECT
productCode,
productName,
buyPrice
FROM
products
WHERE
buyPrice NOT BETWEEN 20 AND 100;
Code language: SQL (Structured Query Language) (sql)

您可以使用小于 ( <
)、大于 ( >
) 和逻辑运算符 ( AND
) 重写上面的查询,如下所示:
SELECT
productCode,
productName,
buyPrice
FROM
products
WHERE
buyPrice < 20 OR buyPrice > 100;
Code language: SQL (Structured Query Language) (sql)
2) 在日期示例中使用 MySQL BETWEEN 运算符
请参阅下面的订单表:

要检查值是否在日期范围内,您应该将该值显式转换为DATE类型。
例如,以下语句返回所需日期在 01/01/2003 到 01/31/2003 之间的订单:
SELECT
orderNumber,
requiredDate,
status
FROM
orders
WHERE
requireddate BETWEEN
CAST('2003-01-01' AS DATE) AND
CAST('2003-01-31' AS DATE);
Code language: SQL (Structured Query Language) (sql)

在此示例中,我们使用CAST()
将文字字符串'2003-01-01'
转换为DATE
值:
CAST('2003-01-01' AS DATE)
Code language: SQL (Structured Query Language) (sql)
概括
- 使用 MySQL
BETWEEN
运算符来测试某个值是否落在某个值范围内。