between and的用法

本文详细解释了SQLServer中的BETWEEN运算符,用于测试一个表达式的值是否在两个指定范围之内。还介绍了NOTBETWEEN用法,以及如何使用其他运算符如>和<来替代。通过实例展示了如何在实际查询中应用这些条件。

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。

示例

A. 使用 BETWEEN

本例返回书的题头标识符,这些书的年度至今单位销售额是从 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

(5 row(s) affected)

B. 使用 > 和 < 代替 BETWEEN

本例使用大于 (>) 和小于 (<) 运算符,由于这些运算符是非包含的,所以返回不同的结果。

USE pubs

GO

SELECT title_id, ytd_sales

FROM titles

WHERE ytd_sales > 4095 AND ytd_sales < 12000

GO

下面是结果集:

title_id ytd_sales

PC1035 8780

(1 row(s) affected)

C. 使用 NOT BETWEEN

本例找出一个指定范围(从 4,095 到 12,000)外的所有行。

USE pubs

GO

SELECT title_id, ytd_sales

FROM titles

WHERE ytd_sales NOT BETWEEN 4095 AND 12000

GO

下面是结果集:

title_id ytd_sales

BU1111 3876

BU2075 18722

MC2222 2032

MC3021 22246

PS1372 375

PS2091 2045

PS2106 111

PS3333 4072

PS7777 3336

TC3218 375

TC4203 15096

### SQL 中 `BETWEEN ... AND` 的用法 在 SQL 中,操作符 `BETWEEN ... AND` 用于选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期[^2]。以下是其详细用法和示例: #### 基本语法 ```sql SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; ``` - `column_name` 是表中的列名。 - `value1` 和 `value2` 是定义范围的两个值,`value1` 必须小于或等于 `value2`。 - 如果需要排除边界值,可以结合 `>` 或 `<` 使用。 #### 示例:数值范围 假设有一个名为 `employees` 的表,包含以下列:`id`, `name`, `salary`。如果要查询工资在 3000 到 5000 之间的员工记录: ```sql SELECT id, name, salary FROM employees WHERE salary BETWEEN 3000 AND 5000; ``` #### 示例:文本范围 对于文本类型的列,`BETWEEN ... AND` 可以用于按字母顺序筛选。例如,查询名字在 'A' 到 'M' 范围内的员工: ```sql SELECT id, name, salary FROM employees WHERE name BETWEEN 'A' AND 'M'; ``` #### 示例:日期范围 如果表中有一列 `hire_date` 记录员工入职日期,可以使用 `BETWEEN ... AND` 查询特定时间段内的记录。例如,查询 2020 年 1 月 1 日到 2020 年 12 月 31 日入职的员工: ```sql SELECT id, name, hire_date FROM employees WHERE hire_date BETWEEN '2020-01-01' AND '2020-12-31'; ``` #### 注意事项 - `BETWEEN ... AND` 包含边界值。如果需要排除边界值,可以改用 `>` 和 `<` 操作符。 - 数据类型必须一致。例如,不能将数字与字符串进行比较[^2]。 ### 结合其他条件 可以将 `BETWEEN ... AND` 与其他条件(如 `AND`, `OR`)结合使用。例如,查询工资在 3000 到 5000 之间且部门为 'Sales' 的员工: ```sql SELECT id, name, salary, department FROM employees WHERE salary BETWEEN 3000 AND 5000 AND department = 'Sales'; ``` ### 在编程语言中的类似用法 虽然 `BETWEEN ... AND` 是 SQL 特有的语法,但在其他编程语言中也可以通过逻辑运算符实现类似功能。例如,在 Python 中: ```python value = 4000 if 3000 <= value <= 5000: print("Value is within the range") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值