MySQLで特定の文字列を一括置換する方法は次の通りです。
方法
例えば、テーブル「予定表」のカラム「場所」の「○○教室」を「○○会議室」に一括置換したい場合には次のようにします。
解説
ポイントとなるのは「UPDATE構文」と「REPLACE関数」です。
「UPDATE構文」については、MySQLのリファレンスマニュアルには次のように書かれています。
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
分かりにくいので使う部分だけを抜粋すると次の通り。
「WHERE」で条件を指定していないので全てのレコードが対象になります。
全てのレコードの指定したカラム(col_name1)に値(expr1)を一括してセットするという意味です。
「REPLACE関数」については、MySQLのリファレンスマニュアルには次のように書かれています。
注意したいのは、ここで使うのは「REPLACE構文」ではない点です。
REPLACE(str,from_str,to_str)
文字列(str)にある置換前文字列(from_str)を置換後文字列(to_str)にすべて置換するという意味です。
元の文字列の中に置換前文字列がない場合には元の文字列がそのまま返されます。
なお「REPLACE構文」は「INCERT構文」と同様にレコードを丸ごと操作する方法ですので、今回のような文字列の置換とは目的が異なります。
コメント