MySQL正則表達式regexp_replace函數(shù)的用法實例
注:此函數(shù)為 MySQL8.0 版本新增,低于8.0版本沒有此函數(shù)。
regexp_replace(expr, pat, repl[, pos[, occurrence[, match_type]]])
用法
將字符串expr與pat指定的正則表達式匹配的匹配項,替換為字符串repl,并返回結(jié)果字符串。如果expr、pat或repl為NULL,則返回值為NULL。
參數(shù)
- expr:要替換的原始字符串,或者數(shù)據(jù)庫表指定的列。
- pat:要匹配的正則表達式,pat為空串時拋異常,Illegal argument to a regular expression。
- repl:將匹配的pat替換成的字符串。
- pos:expr開始搜索的位置。如果省略,則默認(rèn)值為 1。
- occurrence:要替換哪個匹配項。如果省略,則默認(rèn)值為 0(表示“替換所有匹配項”)。
- match_type:指定如何執(zhí)行匹配的任何或所有以下字符。(i:不區(qū)分大小寫的匹配 默認(rèn)。c:區(qū)分大小寫的匹配。m: 多行模式。n:. 字符匹配行終止符。默認(rèn)值是 .匹配在行尾停止。u: 僅 Unix 的行尾。只有換行符會被 、 和 match 運算符識別為以行結(jié)尾.的^行 $。)
用法
示例:基本用法,替換全部數(shù)字變成#。
select regexp_replace('1abc2', '[0-9]', '#');
輸出:
示例:pos用法,從字符串第二位開始搜索,替換全部數(shù)字變成#。
select regexp_replace('12abc', '[0-9]', '#', 2);
輸出:
格式化手機號,將+86 13811112222轉(zhuǎn)換為(+86) 138-1111-2222,’+‘在正則表達式中有定義,需要轉(zhuǎn)義。\\1表示引用的第一個組
SELECT regexp_replace('+86 13811112222','(\\+[0-9]{2})( )([0-9]{3})([0-9]{4})([0-9]{4})','(\\1)\\3-\\4-\\5',0);
結(jié)果:(+86)138-1111-2222
SELECT regexp_replace("123.456.7890","([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})","(\\1)\\2-\\3",0) ; SELECT regexp_replace("123.456.7890","([0-9]{3})\\.([0-9]{3})\\.([0-9]{4})","(\\1)\\2-\\3",0) ;
結(jié)果:(123)456-7890
將字符用空格分隔開,0表示替換掉所有的匹配子串。
SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',0) AS new_str FROM dual;
結(jié)果:a b c d e f g 1 2 3 4 5 6 A B C
SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',2) AS new_str FROM dual;
結(jié)果:ab cdefg123456ABC
SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) ;
結(jié)果:abc
SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) ;
結(jié)果:d
SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) ;
結(jié)果:abc-d
其他案例:
SELECT regexp_replace("abcd","(.)","\\2",1) 結(jié)果為"abcd",因為pattern中只定義了一個組,引用的第二個組不存在。 SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) 結(jié)果為"d" SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) 結(jié)果為"abc" SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) 結(jié)果為"abc-d" SELECT regexp_replace("abcd","a","\\1",0),結(jié)果為” \1bcd”,因為在pattern中沒有組的定義,所以\1直接輸出為字符。
總結(jié)
到此這篇關(guān)于MySQL正則表達式regexp_replace函數(shù)用法的文章就介紹到這了,更多相關(guān)MySQL正則表達式regexp_replace函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql鎖表確認(rèn)及解除鎖表的實現(xiàn)示例
使用MySQL數(shù)據(jù)庫時,我們可能會遇到數(shù)據(jù)庫表被鎖定的情況,本文主要介紹了mysql鎖表確認(rèn)及解除鎖表的實現(xiàn)示例, 具有一定的參考價值,感興趣的可以了解一下2024-06-06Ubuntu?18.04.4安裝mysql的過程詳解?親測可用
這篇文章主要介紹了Ubuntu?18.04.4安裝mysql-親測可用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12在SQL中對同一個字段不同值,進行數(shù)據(jù)統(tǒng)計操作
這篇文章主要介紹了在SQL中對同一個字段不同值,進行數(shù)據(jù)統(tǒng)計操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10