查询范围控制

在 WHERE子句中，可以使用BETWEEN 搜索条件来查询在一定范围内的值。使用 BETWEEN 时，要注意以下指导原则：

SQL Server 返回的结果集中，包含范围内的边缘值；

尽量使用BETWEEN ，而不用 AND 和比较操作符表示的表达式 (>=x AND<=y)，但是，如果要使返回的结果集中不包含边缘值，则使用表达式 (>x AND<y)；

如果想返回不在指定区域的行时，使用NOT BETWEEN。要注意NOT的使用可能会降低数据查询的速度。

## BETWEEN

指定条件范围。

##### 语法

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

##### 参数

test_expression

是用来在由 begin_expression 和 end_expression 定义的范围内进行测试的表达式。test_expression 必须与 begin_expression 和 end_expression 具有相同的数据类型。

NOT

指定谓词的结果被取反。

begin_expression

是任何有效的 Microsoft® SQL Server™ 表达式。begin_expression 必须与 test_expression 和 end_expression 具有相同的数据类型。

end_expression

是任何有效的 SQL Server 表达式。end_expression 必须与 test_expression 和 begin_expression 一样具有相同的数据类型。

AND

作为一个占位符，表示 test_expression 应该处于由 begin_expression 和 end_expression 指定的范围内。

##### 结果类型

Boolean

##### 结果值

如果 test_expression 的值大于或等于 begin_expression 的值并且小于或等于 end_expression 的值，则 BETWEEN 返回 TRUE。

如果 test_expression 的值小于 begin_expression 的值或者大于 end_expression 的值，则 NOT BETWEEN 返回 TRUE。

##### 注释

若要指定排除范围，请使用大于 (>) 和小于 (<) 运算符。如果任何 BETWEEN 或 NOT BETWEEN 谓词的输入为 NULL，则结果是 UNKNOWN。

##### 示例

本例返回书的题头标识符，这些书的年度至今单位销售额是从 4,095 到 12,000。

USE pubs

GO

SELECT title_id, ytd_sales

FROM titles

WHERE ytd_sales BETWEEN 4095 AND 12000

GO

下面是结果集：

title_id ytd_sales

-------- -----------

BU1032 4095

BU7832 4095

PC1035 8780

PC8888 4095

TC7777 4095