mysql字段截取的幾種函數(shù)和搭配函數(shù)示例代碼
一、substr函數(shù)
-- 函數(shù)的語(yǔ)法 -- substring函數(shù)與substr函數(shù)一樣 SUBSTR(str,position,length); SUBSTR(str from position for length);
- str:需要截取的字符串,支持嵌套
- position:截取的起始位置(索引從1開(kāi)始,負(fù)數(shù)表示從末尾倒序計(jì)數(shù),需MySQL 8.0+支持)
- length:是可選參數(shù);截取字符串的長(zhǎng)度(若為負(fù)數(shù)則返回空值)
-- 從position開(kāi)始截取至末尾 SUBSTR(str,position) SUBSTR(str FROM position) -- 從position開(kāi)始截取length長(zhǎng)度 SUBSTR(str,position,length) SUBSTR(str FROM position FOR length)
二、SUBSTRING_INDEX
功能:按分隔符截取字符串特定部分,支持正向/逆向計(jì)數(shù)
-- 語(yǔ)法 SUBSTRING_INDEX(str, delim, count)
參數(shù)解析:
- str:原始字符串或字段
- delim:分隔符(支持多字符)
- count:
正數(shù):從左往右截取前count個(gè)分隔符左側(cè)內(nèi)容
負(fù)數(shù):從右往左截取前abs(count)個(gè)分隔符右側(cè)內(nèi)容
-- 經(jīng)典案例
SELECT SUBSTRING_INDEX('www.fzitv.net', '.', 2); -- 結(jié)果:'www.jb51'
SELECT SUBSTRING_INDEX('100-200-300', '-', -1); -- 結(jié)果:'300'
SELECT SUBSTRING_INDEX('a|b|c', '|', 3); -- 結(jié)果:'a|b|c'(超出分隔符總數(shù)時(shí)返回完整字符串)
三、LEFT/RIGHT
功能:從字符串左/右側(cè)截取固定長(zhǎng)度子串。
-- 語(yǔ)法?: LEFT(str, length) RIGHT(str, length)
參數(shù):
- str:原始字符串
- length:截取長(zhǎng)度(需≥0,否則返回空值;若=0,返回空字符串)
四、LOCATE、instr、position
功能:返回子字符串首次出現(xiàn)的位置,未查詢(xún)到結(jié)果返回0
-- 語(yǔ)法 LOCATE(substr, str , start_pos) -- instr函數(shù)中參數(shù)區(qū)分大小寫(xiě),可以結(jié)合lower/upper共同 INSTR(str, substr) -- 可讀性高 POSITION(substr IN str)
參數(shù):
- substr:待查找的子字符串
- str:原始字符串
- start_pos:起始搜索位置(可以不填,默認(rèn)值1)
五、獲取json字符串里面的指定值
1、JSON_EXTRACT()
-- 語(yǔ)法: JSON_EXTRACT(json_doc, path)
參數(shù)說(shuō)明:
- json_doc:JSON類(lèi)型字段名或JSON字符串
- path:JSON路徑表達(dá)式(以$開(kāi)頭,支持.和[]訪問(wèn)對(duì)象/數(shù)組)
-- 提取JSON對(duì)象中的cusId字段
SELECT JSON_EXTRACT(zt.follow_up_source, '$.cusId') FROM table_name;
-- 提取數(shù)組第一個(gè)元素的name字段(索引從0開(kāi)始)
SELECT JSON_EXTRACT('[{\"name\":\"John\"},{\"name\":\"Jane\"}]', '$[0].name');
2、JSON_UNQUOTE()
功能:移除JSON_EXTRACT返回值的引號(hào),將JSON字符串轉(zhuǎn)為普通文本
SELECT JSON_UNQUOTE(JSON_EXTRACT(info, '$.name')) FROM users WHERE id=1; -- 等效簡(jiǎn)寫(xiě):->>運(yùn)算符(MySQL 5.7+支持) SELECT info->>'$.name' FROM users;
MySQL 5.7+、mariadb10.2.0+:支持基礎(chǔ)JSON函數(shù)
總結(jié)
到此這篇關(guān)于mysql字段截取的幾種函數(shù)和搭配函數(shù)的文章就介紹到這了,更多相關(guān)mysql字段截取函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL使用binlog日志回滾操作失誤的數(shù)據(jù)的操作教程
在日常開(kāi)發(fā)運(yùn)維中,我們可能會(huì)出現(xiàn)一些操作失誤的情況,比如使用了錯(cuò)誤的 sql 語(yǔ)句對(duì) mysql 數(shù)據(jù)進(jìn)行了 update、delete 等操作,失誤操作導(dǎo)致數(shù)據(jù)出現(xiàn)問(wèn)題,那么如果出現(xiàn)這種情況,應(yīng)該如何恢復(fù)失誤/mysql 誤刪數(shù)據(jù)時(shí),本文將使用幾種常用方法帶你回滾誤刪的數(shù)據(jù)2025-08-08
MySQL中一些優(yōu)化straight_join技巧
這篇文章主要介紹了MySQL中一些優(yōu)化straight_join技巧,作者通過(guò)用戶(hù)的實(shí)際案例分析,需要的朋友可以參考下2015-05-05
MYSQL數(shù)據(jù)庫(kù)如何設(shè)置主從同步
大家好,本篇文章主要講的是MYSQL數(shù)據(jù)庫(kù)如何設(shè)置主從同步,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下2022-01-01
MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接的問(wèn)題詳細(xì)解決過(guò)程
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程連接問(wèn)題的詳細(xì)解決過(guò)程,解決MySQL無(wú)法遠(yuǎn)程連接的問(wèn)題需要檢查并修改MySQL的用戶(hù)權(quán)限,確保配置文件允許遠(yuǎn)程訪問(wèn),并且防火墻開(kāi)放3306端口,需要的朋友可以參考下2025-05-05
MySQL數(shù)據(jù)庫(kù)運(yùn)維之?dāng)?shù)據(jù)恢復(fù)的方法
本篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)運(yùn)維之?dāng)?shù)據(jù)恢復(fù)的方法,此處總結(jié)一下恢復(fù)方案,并結(jié)合數(shù)據(jù)庫(kù)的二進(jìn)制日志做下數(shù)據(jù)恢復(fù)的示范。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
MYSQL表中某字段所有值大小寫(xiě)轉(zhuǎn)換
這篇文章主要為大家介紹了MYSQL表中某字段所有值大小寫(xiě)轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
MySQL 查詢(xún)結(jié)果以百分比顯示簡(jiǎn)單實(shí)現(xiàn)
用到了MySQL字符串處理中的兩個(gè)函數(shù)concat()和left()實(shí)現(xiàn)查詢(xún)結(jié)果以百分比顯示,具體示例代碼如下,感興趣的朋友可以學(xué)習(xí)下2013-07-07
傻瓜式用Eclipse連接MySQL數(shù)據(jù)庫(kù)
本來(lái)不想寫(xiě)這么簡(jiǎn)單人文章,在百度上搜索我這個(gè)標(biāo)題,完全符合標(biāo)題的一大堆。但我按照那些文章?lián)v鼓了很久,就是不行。2015-09-09
超詳細(xì)mysql left join,right join,inner join用法分析
比較詳細(xì)的mysql的幾種連接功能分析,只要你看完就能學(xué)會(huì)的好東西2008-08-08

