mysqlで正規表現を使って置換する方法

この記事について

環境PHP、mysql
目的正規表現を使って置換する
結果REGEXPで対象レコードをSELECTし、PHPのpreg_replaceで置換してUPDATEする

つまずきポイント要約

  • mysqlにはREGEXP関数とREPLACE関数があるが、同時に(正規表現で置換)は使えない

mysqlは正規表現のREGEXP関数、置換のREPLACE関数があるが、同時に使えない。

なのでPHPを組み合わせて利用する方法を取る。

次のPHPスクリプトでは、field1 に入っている文字列が「;」で終わっていた場合に、その部分だけを削除している。

<?php
$pattern = ";$"; //正規表現のパターン

//mysqlの正規表現を使ってUPDATEの対象になるレコードを取り出す。
$sql = "SELECT field1 FROM table1 WHERE field1 REGEXP '" . $pattern . "'";
$result = mysql_query($sql) or die(mysql_error()); //sqlを実行

//全て展開
while ($item = mysql_fetch_array($result)) {
  $in_data = $item['field1'];
  $out_data = preg_replace( "/" . $pattern . "/", "", $in_data); //PHPで置換
  $new_sql = "UPDATE table1 SET field1 = '".$out_data."' WHERE field1 = '".$in_data."'"; //置換した文字列をUPDATEするsql文
  mysql_query($new_sql) or die(mysql_error()); //sqlを実行
}
?>

このファイルをサーバーにアップロードして、ブラウザでアクセスすればPHPおよび、mysqlが実行される。

関連記事

タイトルとURLをコピーしました