J'ai une table avec ~500k lignes; varchar(255) UTF8 colonne filename
contient un nom de fichier;
Je suis en train de dépouiller les divers étranges personnages à partir du nom de fichier - j'ai pensé l'utiliser d'une classe de caractères: [^a-zA-Z0-9()_ .\-]
Maintenant, est-il une fonction MySQL qui vous permet de le remplacer par une expression régulière? Je suis à la recherche d'une fonctionnalité similaire à la fonction de remplacement () - exemple simplifié suivant:
SELECT REPLACE('stackowerflow', 'ower', 'over');
Output: "stackoverflow"
/* does something like this exist? */
SELECT X_REG_REPLACE('Stackoverflow','/[A-Zf]/','-');
Output: "-tackover-low"
Je sais que sur les REGEXP/RLIKE, mais ceux-là seulement vérifier si il y a un match, pas ce que le match est.
(Je pourrais faire un "SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'
" à partir d'un script PHP, faire un preg_replace
puis "UPDATE foo ... WHERE pkey_id=...
", mais qui ressemble à un dernier recours lent et moche hack)