在本教程中,将学习如何使用SQL Server BETWEEN运算符指定要测试的范围。
SQL Server BETWEEN运算符简介
BETWEEN运算符是一个逻辑运算符,用于指定要测试值的范围。
以下是BETWEEN运算符的语法:
column | expression BETWEEN start_expression AND end_expression
在上面语法中,
- column | expression- 指定要测试的列或表达式。
- 将start_expression和end_expression放在BETWEEN和AND关键字之间。start_expression,end_expression和要测试的表达式必须具有相同的数据类型。
如果要测试的表达式大于或等于start_expression的值且小于或等于end_expression的值,则BETWEEN运算符返回TRUE。
可以使用大于或等于(>=)且小于或等于(<=)来替换BETWEEN运算符,如下所示:
column | expression <= end_expression AND column | expression >= start_expression
使用BETWEEN运算符的条件比使用比较运算符>=,<=和逻辑运算符AND的条件更具可读性。
要取消BETWEEN运算符的结果,请使用NOT BETWEEN运算符,如下所示:
column | expression NOT BETWEEN start_expression AND end_expresion
如果列或表达式中的值小于start_expression的值且大于end_expression的值,则NOT BETWEEN将返回TRUE。 它相当于以下条件:
column | expression < start_expression AND column | expression > end_expression
请注意,如果BETWEEN或NOT BETWEEN的任何输入为NULL,则结果为UNKNOWN。
SQL Server BETWEEN示例
让我们举一些使用BETWEEN运算符的例子,以了解它是如何工作的。
A. SQL Server BETWEEN两个数字示例
我们将使用示例数据库中的products表进行演示,表的结构如下:

以下查询查找价格介于149.99和199.99之间的产品:
SELECT
    product_id,
    product_name,
    list_price
FROM
    production.products
WHERE
    list_price BETWEEN 149.99 AND 199.99
ORDER BY
    list_price;
执行上面查询语句,得到以下结果:

要获得价格不在149.99和199.99范围内的产品,请使用NOT BETWEEN运算符,如下所示:
SELECT
    product_id,
    product_name,
    list_price
FROM
    production.products
WHERE
    list_price NOT BETWEEN 149.99 AND 199.99
ORDER BY
    list_price;
执行上面查询语句,得到以下结果:
B. SQL Server BETWEEN两个日期示例
请考虑以下orders表,结构如下所示:

以下查询查找客户在2017年1月15日至2017年1月17日期间下的订单:
SELECT
    order_id,
    customer_id,
    order_date,
    order_status
FROM
    sales.orders
WHERE
    order_date BETWEEN '20170115' AND '20170117'
ORDER BY
    order_date;
执行上面查询语句,得到以下结果:

请注意,要指定日期常量,请使用格式:'YYYYMMDD',其中YYYY是4位数年份,例如:2019,MM是2位数月份,例如:01,DD是2位数日,例如15。
在本教程中,学习了如何使用SQL Server BETWEEN运算符来形成针对一系列值进行测试的条件。
