こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2005-06-16 14:43:46

QNo.1453031

困ってます

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

参考URL:http://dev.mysql.com/doc/mysql/ja/regexp.html

投稿日時 - 2005-06-16 19:48:18

補足

回答ありがとうございます。
参考URL拝見させてもらいました。

replace で文字を置きかえれるかどうか
というのが私の問題だったのです。
それとも置換もREGEXPで行えるということなのでしょうか??

投稿日時 - 2005-06-18 13:36:46

あなたにオススメの質問