〜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については知っていますが、それらは一致があるかどうかのみを確認し、一致が何であるかは確認しません。
( PHPSELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'
スクリプトpreg_replace
から「UPDATE foo ... WHERE pkey_id=...
_