SQL的substring_index()用法實例(MySQL字符串截取)
1.substring_index函數(shù)的語法及其用法
(1)語法:substring_index(string,sep,num)
即substring_index(字符串,分隔符,序號)
參數(shù)說明
string:用于截取目標字符串的字符串??蔀樽侄?,表達式等。
sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。
num:序號,為非0整數(shù)。若為整數(shù)則表示從左到右數(shù),若為負數(shù)則從右到左數(shù)。比如“www.mysql.com”截取字符‘www’,分割符為“.”,從左到右序號為1,即substring_index("www.mysql.com",'.',1);若從右開始獲取“com”則為序號為-1即substring_index("www.mysql.com",'.',-1)
(2)用于截取目標字符串。
2.實例
(1)從某字段截取目標字符串。
例:現(xiàn)有一個學生信息表student,詳細地址address儲存省、市、縣等由逗號隔開的地址信息,比如“XX省,XX市,XX區(qū),...,XXX號”。由于某種原因沒有學生所在省信息需要獲取,同時獲取學生姓名name,性別sex,年齡age。
select name,sex,age, substring_index(address,',',1) as province from student
(2)與cast函數(shù)結(jié)合使用截取某字符串并轉(zhuǎn)為目標格式。
例:現(xiàn)有一張訂單信息data,由于2022-03-04日期 之后存儲日期信息的格式出錯,日期前加了一些前綴,并用空格隔開,比如“13d 2022-02-01”,需要獲取該表2022-03-04之后具體日期信息,同時獲取單子offer_id,以及產(chǎn)品名name。
select cast(substring_index(ctime,' ',1) as date) as dt, offer_id,name FROM data WHERE substring_index(ctime,' ',1)>= '2022-03-04'
附:結(jié)合group_concat(),把多條記錄回顯到一條,再做分割
比如一個用戶可以維護多條學歷信息記錄,現(xiàn)在這個人維護了一所本科院校,倆所研究生院校,一所博士院校,現(xiàn)需要展示最高的一個學校,或者需要展示出所有的研究生院校。
/*研究生畢業(yè)院校*/ IF( SUBSTRING_INDEX( GROUP_CONCAT( CASE WHEN a02.R0205 = '11' //表示研究生 THEN a02.R0203 ELSE ',' END ORDER BY a02.R0205, a02.R0206 ), ',', 2 ) = ',' // 如果沒有 ,'', // 返回空,否則,返回下面語句 SUBSTRING_INDEX( GROUP_CONCAT( CASE WHEN a02.R0205 = '21' THEN a02.R0203 END ORDER BY a02.R0205, a02.R0206 ), ',', 2) ) AS dxbyyx,
結(jié)果:
中國人民大學,清華大學
SQL的cast函數(shù)用法可參考SQL的CAST()——轉(zhuǎn)換數(shù)據(jù)類型
總結(jié)
到此這篇關于SQL的substring_index()用法的文章就介紹到這了,更多相關SQL substring_index()用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL存儲引擎MyISAM與InnoDB的9點區(qū)別
這篇文章主要介紹了MySQL存儲引擎MyISAM與InnoDB的9點區(qū)別,寫給有選擇困難癥的同學,需要的朋友可以參考下2014-08-08