MySQLで文字を一括置換する方法

Pocket

MySQLで特定の文字列を一括置換する方法は次の通りです。

UPDATE テーブル SET カラム = REPLACE(カラム,置換前文字列,置換後文字列);

例えば、テーブル「予定表」のカラム「場所」の「○○教室」を「○○会議室」に一括置換したい場合には次のようにします。

UPDATE 予定表 SET 場所 = REPLACE(場所,"教室","会議室");

解説

ポイントとなるのは「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]

分かりにくいので使う部分だけを抜粋すると次の通り。

UPDATE tbl_name SET col_name1=expr1

「WHERE」で条件を指定していないので全てのレコードが対象になります。
全てのレコードの指定したカラム(col_name1)に値(expr1)を一括してセットするという意味です。

「REPLACE関数」については、MySQLのリファレンスマニュアルには次のように書かれています。
注意したいのは、ここで使うのは「REPLACE構文」ではない点です。

REPLACE(str,from_str,to_str)

文字列(str)にある置換前文字列(from_str)を置換後文字列(to_str)にすべて置換するという意味です。
元の文字列の中に置換前文字列がない場合には元の文字列がそのまま返されます。

なお「REPLACE構文」は「INCERT構文」と同様にレコードを丸ごと操作する方法ですので、今回のような文字列の置換とは目的が異なります。

[ 2010年8月21日 | カテゴリー: デジタル | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報