mysql中between的用法及說明
關(guān)于between的使用
between的介紹
日常sql查詢過程中經(jīng)常要篩選某個屬性或某個表達式結(jié)果的某個范圍內(nèi)的數(shù)據(jù),這個時候我們經(jīng)常通過 > 或者 < 來進行篩選,有的時候再項目中由于 > 和 < 經(jīng)常會和起始標(biāo)志符沖突,所以需要進行轉(zhuǎn)義,這個過程很容易出現(xiàn)一些問題,其實在sql的關(guān)鍵字中,有一個非常實用的關(guān)鍵字可以進行范圍查詢,這個關(guān)鍵字就是between,接下來我們就來深入的了解一下between的用法。
between的語法
between關(guān)鍵字是一個邏輯操作符用來篩選指定屬性或表達式某一范圍內(nèi)或范圍外的數(shù)據(jù)。
between關(guān)鍵字常用在where關(guān)鍵字后與select或update或delete共同使用。
between的使用語法如下:
expr [NOT] BETWEEN begin_expr AND end_expr;
在整個表達式中,expr表示的是一個單一的屬性或者是一個計算的表達式,整個表達式中的三個參數(shù) expr、begin_expr、end_expr 必須是同一種數(shù)據(jù)類型。
- between篩選的是 expr >= begin_expr并且 expr <= end_expr 的數(shù)據(jù),如果不存在則返回的是0;
- not between篩選的是 expr < begin_expr或者 expr > end_expr 的數(shù)據(jù),如果不存在則返回的是0;
- 如果 expr 返回的是 NULL,則between 也返回的是null (暫未驗證)
between的用法
假如我們有一張數(shù)據(jù)庫表如下所示
CREATE TABLE `t_income` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id', `income_date` varchar(255) NOT NULL COMMENT '收入年月', `amount` float NOT NULL COMMENT '收入金額', `target_amount` float NOT NULL DEFAULT '0' COMMENT '目標(biāo)收入', `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間', PRIMARY KEY (`id`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
查詢表中amount>=10并且amount<=50的數(shù)據(jù)
select * from t_income where amount between 10 and 50;
查詢表中amount 和 target_amount 總和 >=100并且<=500的數(shù)據(jù)
select * from t_income where (amount + target_amount) between 100 and 500;
查詢表中create_time 在 2019-01-01 到 2019-09-01 這個日期范圍內(nèi)的數(shù)據(jù)
select * from t_income where create_time between cast('2019-01-01' as DATE) and cast('2019-09-01' as DATE);
查詢表中amount < 10 或者 amount > 50 的數(shù)據(jù)
select * from t_income where amount not between 10 and 50;
between的總結(jié)
通過上面的講解,我們現(xiàn)在應(yīng)該已經(jīng)基本的學(xué)會了between的用法,但是如果在開發(fā)中,我們要查詢某個屬性大于某一個值 并且小于某個值的話,我們就只能用 > and < 啦
mysql中的between邊界問題
between在不同的SQL中有不同的邊界包含問題,查了下mysql官網(wǎng)對于between的解釋。
在mysql中,between A and B 等同于表達式 >= A and <= B
官網(wǎng)地址:MySQL官網(wǎng)對于between的解釋
mysql中,當(dāng)對日期時間之類的字段進行比較時,需要注意幾個點:
1.字段類型是date,年月日,類似‘2022-08-08’,between ‘2022-01-01’ and ‘2022-02-02’ 的查詢結(jié)果包括’2022-01-01’和’2022-02-02’
2.字段類型是datetime,年月日時分秒,類似‘2022-08-08 08:08:08’,若要查詢2022年1月1號(包含)到2022年2月2號(包含)的數(shù)據(jù),使用between ‘2022-01-01 00:00:00’ and ‘2022-02-02 23:59:59’,不要使用between ‘2022-01-01’ and ‘2022-02-03’,因為這句相當(dāng)于between ‘2022-01-01 00:00:00’ and ‘2022-02-03 00:00:00’,會將 '2022-02-03 00:00:00’的數(shù)據(jù)也查詢到
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL中使用PROFILING來查看SQL執(zhí)行流程的實現(xiàn)步驟
在MySQL中,PROFILING功能提供了一種方式來分析SQL語句的執(zhí)行時間,包括查詢執(zhí)行的各個階段,如發(fā)送、解析、優(yōu)化、執(zhí)行等,這對于診斷性能問題非常有用,本文給大家介紹了MySQL中使用PROFILING來查看SQL執(zhí)行流程的實現(xiàn)步驟,需要的朋友可以參考下2024-07-07MySQL下使用Inplace和Online方式創(chuàng)建索引的教程
這篇文章主要介紹了MySQL下使用Inplace和Online方式創(chuàng)建索引的教程,針對InnoDB為存儲引擎的情況,需要的朋友可以參考下2015-11-11SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程)
SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程),使用sqlserver2005的朋友可以參考下。2011-09-09詳解MySQL中concat函數(shù)的用法(連接字符串)
本篇文章主要介紹了MySQL中concat函數(shù)的用法(連接字符串),在命令行模式下進行測試。具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12