MySQL が正規表現ベースの文字列置換をサポートしているとは思えません — ドキュメントにはそのようなものはありません — しかし、次のような式を書くことができます:
CASE WHEN path_plus_filename REGEXP '^/wp-content/uploads/2012/10/.*[.]jpg$'
THEN REPLACE(path_plus_filename, '%2B', '_')
ELSE path_plus_filename
END
これは を返しますが、すべてが一致する場合 (および場合のみ)にすべてをpath_plus_filename
置き換えます。%2B
_
^/wp-content/uploads/2012/10/.*[.]jpg$
または、UPDATE
クエリではなくステートメントが必要な場合は、次のように記述できます。
UPDATE table_that_contains_path_plus_filename_column
SET path_plus_filename = REPLACE(path_plus_filename, '%2B', '_')
WHERE path_plus_filename REGEXP '^/wp-content/uploads/2012/10/.*[.]jpg$'
;
追加するように編集:ちなみに、これはここでもそこでもありませんが、正規表現の問題は、%2B
前に/wp-content/uploads/2012/10/
+ちょうど1 文字、後ろにちょうど2 文字 +を付ける必要があることjpg
です。許容される文字数にある程度の柔軟性を持たせるには、.*
("0 個以上の文字") または.+
("1 個以上の文字") または.{5,20}
("5 から 20 文字の間") などを使用する必要があります。