4 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
MySQL 8.0+你可以原生使用REGEXP_REPLACE
。
REGEXP_REPLACE(expr,pat,repl [,pos [,occurrence [,match_type]]])
將字符串expr中與模式pat指定的正則表達(dá)式匹配的匹配項(xiàng)替換為替換字符串repl,并返回結(jié)果字符串。如果expr,pat或repl為NULL,則返回值為NULL。
以前,MySQL使用Henry Spencer正則表達(dá)式庫來支持正則表達(dá)式運(yùn)算符(REGEXP,RLIKE)。
正則表達(dá)式支持已使用國際Unicode組件(ICU)重新實(shí)現(xiàn),它提供完整的Unicode支持并且是多字節(jié)安全的。REGEXP_LIKE()函數(shù)以REGEXP和RLIKE運(yùn)算符的方式執(zhí)行正則表達(dá)式匹配,這些運(yùn)算符現(xiàn)在是該函數(shù)的同義詞。此外,REGEXP_INSTR(),REGEXP_REPLACE()和REGEXP_SUBSTR()函數(shù)可用于查找匹配位置并分別執(zhí)行子串替換和提取。
SELECT REGEXP_REPLACE('Stackoverflow','[A-Zf]','-',1,0,'c'); -- Output:-tackover-low

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
沒有。
但是,如果您可以訪問您的服務(wù)器,則可以使用用戶定義的函數(shù)(UDF),如mysql-udf-regexp。
編輯: MySQL 8.0+你可以原生使用REGEXP_REPLACE。更多回答如上

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
我的強(qiáng)力方法讓這個(gè)工作只是:
轉(zhuǎn)儲(chǔ)表 -
mysqldump -u user -p database table > dump.sql
查找并替換幾個(gè)模式 -
find /path/to/dump.sql -type f -exec sed -i 's/old_string/new_string/g' {} \;
顯然,您可以在文件上執(zhí)行其他perl regeular表達(dá)式。導(dǎo)入表格 -
mysqlimport -u user -p database table < dump.sql
如果要確保字符串不在數(shù)據(jù)集中的其他位置,請運(yùn)行一些正則表達(dá)式以確保它們都出現(xiàn)在類似的環(huán)境中。在運(yùn)行替換之前創(chuàng)建備份并不困難,以防您意外破壞丟失信息深度的內(nèi)容。
添加回答
舉報(bào)