mysql:10193
From: "Takashi Yamashita" <"Takashi Yamashita" <takasi@xxxxxxxxxx>>
Date: Fri, 17 Sep 2004 13:31:12 +0900
Subject: [mysql 10193] Re: replace()関数の処理
お世話になっております。 > 「書き換えられた後に再びselectクエリが実行される」ということは > ありません! ここのselectクエリの対象になるのはreplaceされる > 前のデータだけです。 > ですから、replace(replace(replace(....)))のような式を記述するとか、 > replace文あるいはupdate文を複数回実行するとか、置き換えをSQL以外で > 行なうとか、そういった方法になると思います。 分かりました。 私が作成したクエリでは、 再帰的にreplace文を呼び出すような処理にはならないのですね。 というより、再帰的にreplace文を呼び出すようなクエリは、 存在しないということですね。 そうしましたら従来通り、以下のphpコードで置換処理を行うことにします。 ========================================================= $hResult=mysql_query("select field_from, field_to from tbl_rep"); while($row=mysql_fetch_array($hResult)) { mysql_query( sprintf("update tbl_a set field_n=replace(field_n,'%s','%s')", $row[field_from], $row[field_to]); } mysql_free_result($hResult); ========================================================= 非常に勉強になりました。 ありがとうございました。>片寄様、宇野様 それからダメもとですが、 recursive_replaceみたいなsqlステートメントがあると、 上記コードがsql一行で書けるので非常に助かると思うのですが、 どうでしょうか? 宜しくお願いします。 ------------------------------------------------------------- 山下高司 takasi@xxxxxxxxxx
10172 2004-09-16 10:19 ["Takashi Yamashita" ] replace()関数の処理 10173 2004-09-16 11:07 ┗["片寄白王" <katayose] 10174 2004-09-16 11:31 ┗["Takashi Yamashita" ] 10179 2004-09-16 18:06 ┣["片寄白王" <katayose] 10180 2004-09-16 19:21 ┗["Takashi Yamashita" ] 10181 2004-09-16 20:28 ┗[UNO Shintaro <uno@xx] 10184 2004-09-16 21:53 ┗["Takashi Yamashita" ] 10192 2004-09-17 12:18 ┗[UNO Shintaro <uno@xx] -> 10193 2004-09-17 13:31 ┗["Takashi Yamashita" ]