<dammy>○○</dammy>
という値を
<dammy>××</dammy>
に変換したいと考えています。
○○のなかには、どんな値が入っているか分かりません。
正規表現を使えば、置換できると思うのですが、
MYSQLでのSQLを教えてください。
正規表現というよりはワイルドカードのことかと思いますが、
http://dev.mysql.com/doc/refman/4.1/ja/mysqlshow.html
UPDATE table SET data='<dammy>××</dammy>' WHERE data LIKE '<dammy>%</dammy>'
ということでしょうか。
あるいは、このあたりのお話でしょうか。
http://f32.aaa.livedoor.jp/~azusa/index.php?t=mysql&p=string
MySQL での replace 関数は正規表現に対応していないので、
出力した結果を使用して、SQL を実行するか、PHP のようなスクリプトを利用すれば、
実現できるでしょう。
以下 PHP のサンプルです。
<?php $username = "mysql_user"; $password = "mysql_password"; $host = "localhost"; $database = "testdb"; $con = mysql_connect($host, $username, $password) or die("Connect Error!!"); mysql_select_db($database) or dir("DB SELECT Error!!"); $sql = "SELECT * FROM my_table WHERE data LIKE '%<ttt>%</ttt>%'"; $result = mysql_query( $sql, $con) or dir( "QUERY ERROR ".$sql ); while ($item = mysql_fetch_array($result)) { $in_data = $item['data']; $out_data = ereg_replace( "<ttt>.+</ttt>", "<sss>XXX</sss>", $in_data ); mysql_query("UPDATE my_table SET data = '".$out_data."' WHERE data ='".$in_data."'"); } mysql_close($con); ?>
追加で条件がありまして、
<dammy>○○</dammy> の前後には、0文字以上のなんらかの文字があります。
update table set data=replace(data,'<dammy>%</dammy>',<dammy>××</dammy>)
という表現は可能なのでしょうか?