MySQL中提供了一個非常方便的方法,用于替換一個字符串或者字符集中的一個子字符串或者字符為另一個字符串或者字符。
這個方法是REPLACE(),它的語法如下:
REPLACE(str, from_str, to_str)
其中,str是需要進行替換操作的字符串或者字符集;from_str是需要被替換的子字符串或者字符;to_str是需要替換為的新字符串或者字符。
舉一個簡單的例子:
SELECT REPLACE('hello world!', 'world', 'mysql');
這條SQL語句的執行結果就是字符串'hello mysql!'。
該方法還支持一種比較神奇的用法。如果你將to_str參數省略,則會將from_str參數從str參數中刪除掉。
看下面的例子:
SELECT REPLACE('hello world!', 'o', '');
這條SQL語句的執行結果就是字符串'hell wrld!'。
需要注意的是,REPLACE()方法只會替換到第一個匹配的子字符串或者字符。如果你需要將所有的匹配項都替換掉,可以結合使用REPEAT()函數。
以將所有的'a'替換為'em'為例:
SELECT REPLACE('banana', 'a', 'em'); SELECT REPLACE('banana', 'a', 'em' REPEAT('em', LENGTH('banana') - LENGTH(REPLACE('banana', 'a', '')));
第一條SQL語句只能將第一個'a'替換為'em':
SELECT REPLACE('banana', 'a', 'em');
執行結果為:'bemnana'。
而第二條SQL語句則成功全局替換:
SELECT REPLACE('banana', 'a', 'em' REPEAT('em', LENGTH('banana') - LENGTH(REPLACE('banana', 'a', '')))); SELECT REPLACE('banana', 'a', 'emememememem');
執行結果為:'bememememememneneme'。