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

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が実行される。