• 締切済み

mysqlの関数でereg_replace

レコードから、特定のドメインを含むURLを消去する、といった動作をmysqlの関数で実現しようと考えてます。phpで言うところのereg_replace()のような関数がmysqlであるかどうかということです。 以下のように"bbs"というテーブルの"com"というフィールドからURLに値する文字列を消去するSQL分を実行しましたがこれは動作しませんでした。 update bbs set com = replace(com,regexp '(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)','') where com regexp '(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)'; replace関数の第二引数にregexpを使用することができませんでした。(やり方が間違ってるのでしょうか?) phpのereg_replaceを使用してフィールド"com"に含まれるURLを消去していくというやり方で実現は可能なのですが、動作の軽さやソースのシンプルさを考え、SQL文で実現することを考えてます。 mysqlのヴァージョンは3.23.58です。 よろしくお願いいたします。m(__)m

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

REGEXP 関数で可能のようです。 具体的に試したことはありませんが・・・

参考URL:
http://dev.mysql.com/doc/mysql/ja/regexp.html
niku_jagar
質問者

補足

回答ありがとうございます。 参考URL拝見させてもらいました。 replace で文字を置きかえれるかどうか というのが私の問題だったのです。 それとも置換もREGEXPで行えるということなのでしょうか??

関連するQ&A