Maison >base de données >tutoriel mysql >Comment supprimer efficacement les caractères non alphanumériques des chaînes dans MySQL ?
Supprimer efficacement les caractères non alphanumériques des chaînes dans MySQL
Dans MySQL, comparer des chaînes peut être une tâche gourmande en performances. Pour optimiser l'efficacité, il est souvent avantageux de supprimer les caractères non alphanumériques avant d'effectuer la comparaison. Explorons différentes approches pour y parvenir, notamment en tirant parti de la fonctionnalité regex et en créant une fonction personnalisée.
MySQL 8.0 et versions ultérieures : utilisation de Regex
Avec MySQL 8.0 ou versions ultérieures, vous pouvez utiliser des expressions régulières (expressions régulières) pour remplacer les caractères non alphanumériques. L'instruction SQL suivante illustre cette approche :
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Dans cette instruction, l'expression régulière [^0-9a-zÀ-ÿ ] correspond à tout caractère qui n'est pas un chiffre, une lettre, un espace ou un caractère accentué.
MySQL 5.7 et versions antérieures : création d'une fonction personnalisée
Pour les versions MySQL antérieures (5.7 ou version inférieure), la fonctionnalité regex n'est pas disponible. Comme alternative, vous pouvez créer une fonction personnalisée qui supprime les caractères non alphanumériques. Voici un exemple d'implémentation :
DROP FUNCTION IF EXISTS alphanum; DELIMITER | CREATE FUNCTION alphanum(str CHAR(255)) RETURNS CHAR(255) DETERMINISTIC BEGIN DECLARE i, len SMALLINT DEFAULT 1; DECLARE ret CHAR(255) DEFAULT ''; DECLARE c CHAR(1); IF str IS NOT NULL THEN SET len = CHAR_LENGTH(str); REPEAT BEGIN SET c = MID(str, i, 1); IF c REGEXP '[[:alnum:]]' THEN SET ret=CONCAT(ret,c); END IF; SET i = i + 1; END; UNTIL i > len END REPEAT; ELSE SET ret=''; END IF; RETURN ret; END | DELIMITER ;
Une fois créée, vous pouvez utiliser cette fonction pour supprimer les caractères non alphanumériques, comme indiqué ci-dessous :
select 'This works finally!', alphanum('This works finally!');
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!