Mysql中SUBSTRING函數(shù)的具體使用
SUBSTRING函數(shù)
SUBSTRING函數(shù)是文本處理函數(shù),可以截取字符串
格式: SUBSTRING(s, start, length)
從字符串s的start位置截取長(zhǎng)度為length的子字符串
如果SUBSTRING()函數(shù)接收2個(gè)參數(shù):SUBSTRING(s,start),則第一個(gè)參數(shù)為待截取的字符串,第二個(gè)參數(shù)為截取的起始位置。如果第二個(gè)參數(shù)為負(fù)整數(shù),則為倒數(shù)的起始位置
以字符串“abc123”為例
SUBSTRING()函數(shù)接收兩個(gè)參數(shù)
操作示例 | 示例結(jié)果 |
SELECT SUBSTRING('abc123',2) | bc123 |
SELECT SUBSTRING('abc123',-3) | 123 |
如果SUBSTRING()函數(shù)接收3個(gè)參數(shù):SUBSTRING(s,start,length),則第一個(gè)參數(shù)為待截取的字符串,第二個(gè)參數(shù)為截取的起始位置,第三個(gè)參數(shù)為截取的長(zhǎng)度。如果第二個(gè)參數(shù)為負(fù)整數(shù),則為倒數(shù)的起始位置
以字符串“abc123”為例
SUBSTRING()函數(shù)接收3個(gè)參數(shù)
操作示例 | 示例結(jié)果 |
SELECT SUBSTRING('abc123',2,3) | bc1 |
SELECT SUBSTRING('abc123',-3,2) | 12 |
習(xí)題案例現(xiàn)有一張訂單表,order_time字段是精確到秒的字符串格式的時(shí)間,需查詢并獲取每個(gè)訂單的”年“、”月“、”日“,即衍生出3個(gè)新字段
注意:表中的時(shí)間是字符串格式的,因此可以使用SUBSTRING()函數(shù)提取年、月、日
原始表
查詢得到的結(jié)果 :
代碼 :
-- 建表語(yǔ)句 DROP TABLE IF EXISTS order_detail; CREATE TABLE order_detail( order_id VARCHAR(8), order_time VARCHAR(32) ) ENGINE = InnoDB DEFAULT CHARSET = utf8; INSERT INTO order_detail (order_id,order_time) VALUE ('o001','2020-06-15 09:12:33') ,('o002','2020-06-15 13:24:09') ,('o003','2020-06-16 10:44:24') ,('o004','2020-06-17 08:05:52') ,('o005','2020-06-18 18:03:43'); -- 查詢語(yǔ)句 SELECT * , SUBSTRING(order_time,1,4) AS order_year, SUBSTRING(order_time,6,2) AS order_month, SUBSTRING(order_time,9,2) AS order_day FROM order_detail;
SUBSTRING_INDEX函數(shù)
格式
SUBSTRING_INDEX(str, delimiter, number)
返回從字符串str的第number個(gè)出現(xiàn)的分隔符delimiter之前的子串;如果number是正數(shù),那么就是從左往右數(shù),返回第number個(gè)分隔符的左邊的全部?jī)?nèi)容;相反,如果number是負(fù)數(shù),那么就是從右邊開(kāi)始數(shù),第number個(gè)分隔符右邊的所有內(nèi)容
注意:如果number超過(guò)了實(shí)際分隔符的個(gè)數(shù),則返回實(shí)際個(gè)數(shù)的字符串
參數(shù)說(shuō)明
- str: 待截取的字符串,STRING類型
- delimiter: 分隔符,STRING類型
- number: 指定分隔符位置,INT類型
返回值
返回STRING類型字符串,如果任一輸入?yún)?shù)為NULL,則返回NULL
示例
-- 案例1 SELECT SUBSTRING_INDEX('a*b','*',1) -- a -- 案例2 SELECT SUBSTRING_INDEX('a*b','*',-1) -- b -- 案例3 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1) -- c -- 案例3可拆解成以下兩個(gè)步驟 SELECT SUBSTRING_INDEX('a*b*c*d*e','*',3); -- a*b*c SELECT SUBSTRING_INDEX('a*b*c','*',-1) -- c -- 案例4 -- 如果任一輸入?yún)?shù)為NULL,則返回NULL SELECT SUBSTRING_INDEX('https://www.google.com', null, 2); SELECT SUBSTRING_INDEX('https://www.google.com', '.', null); SELECT SUBSTRING_INDEX(null, '.', 2); -- 案例5 -- 如果number超過(guò)了實(shí)際分隔符的個(gè)數(shù),則返回實(shí)際個(gè)數(shù)的字符串 -- https://www.google.com SELECT SUBSTRING_INDEX('https://www.google.com', '.', 4);
擴(kuò)展練習(xí)
1.統(tǒng)計(jì)每種性別的人數(shù)
導(dǎo)入數(shù)據(jù)
drop table if exists user_submit; CREATE TABLE `user_submit` ( `id` int NOT NULL, `device_id` int NOT NULL, `profile` varchar(100) NOT NULL, `blog_url` varchar(100) NOT NULL ); INSERT INTO user_submit VALUES(1,2138,'180cm,75kg,27,male','http:/url/bisdgboy777'); INSERT INTO user_submit VALUES(2,3214,'165cm,45kg,26,female','http:/url/dkittycc'); INSERT INTO user_submit VALUES(3,6543,'178cm,65kg,25,male','http:/url/tigaer'); INSERT INTO user_submit VALUES(4,4321,'171cm,55kg,23,female','http:/url/uhsksd'); INSERT INTO user_submit VALUES(5,2131,'168cm,45kg,22,female','http:/url/sysdney');
user_submit表
問(wèn)題:現(xiàn)在運(yùn)營(yíng)舉辦了一場(chǎng)比賽,收到了一些參賽申請(qǐng),表數(shù)據(jù)記錄形式如上所示,現(xiàn)在運(yùn)營(yíng)想要統(tǒng)計(jì)每個(gè)性別的用戶分別有多少參賽者,請(qǐng)取出相應(yīng)結(jié)果
SELECT SUBSTRING_INDEX(profile,',',-1)AS gender, COUNT(device_id)AS number FROM user_submit GROUP BY gender;
結(jié)果展示
2.提取博客URL中的用戶名
導(dǎo)入數(shù)據(jù)
drop table if exists user_submit; CREATE TABLE `user_submit` ( `id` int NOT NULL, `device_id` int NOT NULL, `profile` varchar(100) NOT NULL, `blog_url` varchar(100) NOT NULL ); INSERT INTO user_submit VALUES(1,2138,'180cm,75kg,27,male','http:/url/bisdgboy777'); INSERT INTO user_submit VALUES(2,3214,'165cm,45kg,26,female','http:/url/dkittycc'); INSERT INTO user_submit VALUES(3,6543,'178cm,65kg,25,male','http:/url/tigaer'); INSERT INTO user_submit VALUES(4,4321,'171cm,55kg,23,female','http:/url/uhsksd'); INSERT INTO user_submit VALUES(5,2131,'168cm,45kg,22,female','http:/url/sysdney');
user_submit表
問(wèn)題:對(duì)于申請(qǐng)參與比賽的用戶,blog_url字段中url字符后的字符串為用戶個(gè)人博客的用戶名,現(xiàn)在運(yùn)營(yíng)想要把用戶的個(gè)人博客用戶字段提取出單獨(dú)記錄為一個(gè)新的字段,請(qǐng)取出所需數(shù)據(jù)
SELECT device_id, SUBSTRING_INDEX(blog_url,'/',-1)AS user_name FROM user_submit;
結(jié)果展示
3.截取出年齡
導(dǎo)入數(shù)據(jù)
drop table if exists user_submit; CREATE TABLE `user_submit` ( `id` int NOT NULL, `device_id` int NOT NULL, `profile` varchar(100) NOT NULL, `blog_url` varchar(100) NOT NULL ); INSERT INTO user_submit VALUES(1,2138,'180cm,75kg,27,male','http:/url/bisdgboy777'); INSERT INTO user_submit VALUES(2,3214,'165cm,45kg,26,female','http:/url/dkittycc'); INSERT INTO user_submit VALUES(3,6543,'178cm,65kg,25,male','http:/url/tigaer'); INSERT INTO user_submit VALUES(4,4321,'171cm,55kg,23,female','http:/url/uhsksd'); INSERT INTO user_submit VALUES(5,2131,'168cm,45kg,22,female','http:/url/sysdney');
user_submit表
問(wèn)題:現(xiàn)在運(yùn)營(yíng)舉辦了一場(chǎng)比賽,收到了一些參賽申請(qǐng),表數(shù)據(jù)記錄形式如上所示,現(xiàn)在運(yùn)營(yíng)想要統(tǒng)計(jì)每個(gè)年齡的用戶分別有多少參賽者,請(qǐng)取出相應(yīng)結(jié)果
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(profile,',',-2),',',1)AS age, COUNT(device_id)AS number FROM user_submit GROUP BY age;
結(jié)果展示
到此這篇關(guān)于Mysql中SUBSTRING函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Mysql SUBSTRING函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows無(wú)法啟動(dòng)MySQL服務(wù)報(bào)錯(cuò)1067的解決方法
這篇文章主要為大家詳細(xì)介紹了windows無(wú)法啟動(dòng)MySQL服務(wù)報(bào)錯(cuò)1067的3種解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01ERROR: Error in Log_event::read_log_event()
ERROR: Error in Log_event::read_log_event(): read error, data_len: 438, event_type: 22014-02-02MySQL注入繞開(kāi)過(guò)濾的技巧總結(jié)
這篇文章主要介紹了關(guān)于MySQL注入時(shí)繞開(kāi)過(guò)濾的技巧,文中通過(guò)圖文與示例代碼介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02MySQL數(shù)據(jù)庫(kù)存儲(chǔ)引擎的應(yīng)用
存儲(chǔ)引擎是MySQL將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中的存儲(chǔ)方式,本文主要介紹了MySQL數(shù)據(jù)庫(kù)的存儲(chǔ)引擎的應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù)
這篇文章主要介紹了Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù),幫助大家更好的理解和使用MySQL 數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-11-11win11設(shè)置mysql開(kāi)機(jī)自啟的實(shí)現(xiàn)方法
本文主要介紹了win11設(shè)置mysql開(kāi)機(jī)自啟的實(shí)現(xiàn)方法,要通過(guò)命令行方式設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03