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

Posted on カテゴリー: タグ:

サイトのドメインの変更やSSL化などの際にデータベースを使用したウェブサイトの場合、文字列を一括で置換したい場合があります。

一括置換するSQL文

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

使用例

WordPressで投稿本文のURLを「http://www.redwoodcity.jp」から「https://www.redwoodcity .jp」に一括置換したい場合。

UPDATE wp_posts SET post_content = REPLASE( post_content, 'http://www.redwoodcity.jp', 'https://www.redwoodcity.jp');

上記の例では「wp_posts」テーブルに格納されている投稿本文のすべてを置換します。その中には「投稿」「固定ページ」「カスタム投稿タイプ」「メディア」を含みます。

特定の投稿を置換したい場合

UPDATE wp_posts SET post_content = REPLASE( post_content, 'http://www.redwoodcity.jp', 'https://www.redwoodcity.jp') WHERE post_id = 投稿ID;

「WHERE post_id = 投稿ID」を追記することで指定したIDのみ置換することが出来ます。

phpMyAdminから操作して置換する方法は?

残念ながらphpMyAdminで一括置換する操作は存在しません。
そのため、一括置換したい場合はSQL文を使用しましょう。

WordPressでサイト内の情報を置換したい場合は?

Search Regex」というプラグインを使用しましょう。
ただし、このプラグインは「投稿」と「投稿者」の情報しか置換できません。
カスタム投稿タイプの置換は出来ません。

「投稿」記事の内容を簡易で置換できるメリットがありますが、カスタム投稿タイプなどを含む場合は、やはり上記のSQL文を使用しましょう。