12
MySQLで正規表現を置き換える方法は?
50万行までのテーブルがあります。varchar(255)UTF8列filenameにはファイル名が含まれます。 私はファイル名からさまざまな奇妙な文字を取り除こうとしています-文字クラスを使用すると思いました: [^a-zA-Z0-9()_ .\-] さて、MySQLには正規表現で置換できる関数はありますか?REPLACE()関数と同様の機能を探しています-次の簡単な例: SELECT REPLACE('stackowerflow', 'ower', 'over'); Output: "stackoverflow" /* does something like this exist? */ SELECT X_REG_REPLACE('Stackoverflow','/[A-Zf]/','-'); Output: "-tackover-low" 私が知っているREGEXP / RLIKEが、それらはチェックしている場合ではなく、一致するものが何試合があります。 (PHPスクリプトから" "を実行し、次に " "を実行することもできますが、それは最後の手段である遅い醜いハックのように見えます)SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'preg_replaceUPDATE foo ... WHERE pkey_id=...