У меня есть таблица с ~ 500 тыс. строк; 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, но они проверяют, есть ли совпадение, а не то, что соответствует.
(я мог бы сделать "SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'
" из PHP script, сделать preg_replace
, а затем "UPDATE foo ... WHERE pkey_id=...
", но это выглядит как медленный и уродливый взломать последний курорт)