MySQL BETWEEN 用法

本文详细介绍了 MySQL BETWEEN 语法,它用于 WHERE 表达式选取介于两值间的数据范围,可搭配 NOT 取反。还说明了其在数值、字符串、时间日期上的应用,不同数据库对边界值处理有差异。此外,BETWEEN 有数据比较功能,可用于多种 SQL 语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL BETWEEN 语法

BETWEEN 运算符用于 WHERE 表达式中,选取介于两个值之间的数据范围。BETWEEN 同 AND 一起搭配使用,语法如下:

1

2

WHERE column BETWEEN value1 AND value2

WHERE column NOT BETWEEN value1 AND value2

通常 value1 应该小于 value2。当 BETWEEN 前面加上 NOT 运算符时,表示与 BETWEEN 相反的意思,即选取这个范围之外的值。

BETWEEN 实例

选取 uid 在 2 到 5 之间的用户数据:

1

SELECT * FROM user WHERE uid BETWEEN 2 AND 5

返回查询结果如下:

465.png

除了数值类型外,BETWEEN 也支持字符串范围,如下选择出所有 username 介于 a 至 j 之间的用户(并包括单字母k/K):

1

SELECT * FROM user WHERE username BETWEEN 'a' AND 'k'

字符范围也支持汉字,但通常来说没什么意义。

MySQL BETWEEN 边界

虽然几乎所有的数据库都支持 BETWEEN ... AND 运算符,但不同的数据库对 BETWEEN ... AND 处理方式是有差异的。在 MySQL 中,BETWEEN 包含了 value1 和 value2 边界值,如上面选取 uid 在 2 到 5 之间的用户数据例子。

而有的数据库则不包含 value1 和 value2 边界值(类似于 > and <),也有数据库包含 value1 而不包含 value2(类似于 >= and <)。所以在使用 BETWEEN ... AND 的时候,请检查你的数据库是如何处理 BETWEEN 边界值的。

MySQL BETWEEN 时间日期

BETWEEN AND 常用于检索时间或日期段内的内容,下面是一些常见的 BETWEEN 时间日期例子:

1

2

3

4

5

6

7

8

// int 时间戳格式,查询 2008-08-08 20:00:00 到 2009-01-01 零点之前的数据

SELECT * FROM table WHERE column_time BETWEEN 1218196800 AND 1230739199

 

// DATE 格式,查询 2008-08-08 到 2009-01-01 零点之前的数据

SELECT * FROM table WHERE column_time BETWEEN '2008-08-08' AND '2009-01-01'

 

// DATETIME 格式,查询 2008-08-08 20:00:00 到 2009-01-01 零点之前的数据

SELECT * FROM table WHERE column_time BETWEEN '2008-08-08 20:00:00' AND '2008-12-31 23:59:59'

但对于查询到当前时间的数据,建议使用 >= 运算符:

1

2

// DATETIME 格式,查询 2008-08-08 20:00:00 到当前时刻的数据

SELECT * FROM table WHERE column_time >= '2008-08-08 20:00:00'

可见,同样的需求,不同的字段类型,写法可能就不一样。从效率上来讲,int 时间戳格式效率最优。

以上 BETWEEN 的各个例子,虽然都是 SELECT 查询,但 BETWEEN 也可以用于 UPDATE、DELETE 等适用 WHERE 表达式的 SQL 中。

MySQL BETWEEN 数据比较

BETWEEN 还具有数据比较功能,语法如下:

1

expr BETWEEN min AND max

当 expr 表达式的值大于或等于 min 且小于或等于 max 时, BETWEEN 的返回值为 1 ,否则返回 0 。利用这个功能,可以判断一个表达式或值否则在某个区间:

1

2

3

4

5

6

// 返回 0

SELECT 1 BETWEEN 2 AND 3

// 返回 1

SELECT 'b' BETWEEN 'a' AND 'c'

// 判断日期范围

SELECT 20080808 BETWEEN 20080101 AND 20090101

BETWEEN 与 <、<=、>=、> 等运算符在某些情况下有着类似的功能,但 BETWEEN 运算级别更高且效率上更甚一筹。当然由于 BETWEEN 存在边界值的问题而不够灵活,因此不同的情况,采用何种运算符,需要具体对待。

以上就是MySQL BETWEEN 用法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

  • 微信
  • 分享
### MySQL BETWEEN 关键字详解 #### 1. 基本定义与用途 `BETWEEN` 运算符用于选取介于两个值之间的数据范围,这些值可以是数值、文本或日期。此运算符会匹配范围内所有的值,包括边界值。 #### 2. 语法结构 基本的 `BETWEEN` 语法如下所示: ```sql SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; ``` 这里的 `value1` 和 `value2` 定义了要查询的数据范围两端[^3]。 #### 3. 数据类型的兼容性 值得注意的是,`BETWEEN` 可以应用于多种不同的数据类型,比如整数、字符串以及时间戳等。对于字符型数据来说,比较依据字母表顺序;而对于日期,则按照日历上的先后次序来进行对比。 #### 4. 实际应用案例分析 下面给出几个具体的实例来展示如何运用 `BETWEEN` 来实现不同场景下的需求: - **数字区间筛选** 当需要获取特定价格区间的商品列表时,可以通过设置合理的上下限参数完成操作。 ```sql SELECT product_name, price FROM products WHERE price BETWEEN 50 AND 100; ``` - **字符序列检索** 若要找出首字母位于指定范围内的记录项,可借助于此特性简化条件设定过程。 ```sql SELECT name FROM employees WHERE first_letter(name) BETWEEN 'A' AND 'F'; ``` - **时间段过滤** 对于涉及时间维度的信息提取任务而言,采用这种方式能有效提高效率并减少错误率。 ```sql SELECT order_id, customer_name, order_date FROM orders WHERE order_date BETWEEN DATE('2023-01-01') AND DATE('2023-12-31'); ``` 除了上述提到的应用之外,`BETWEEN` 同样适用于其他支持 `WHERE` 子句的操作命令之中,像更新(`UPDATE`)或是删除(`DELETE`)语句都可以见到它的身影[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值