Maison > base de données > tutoriel mysql > Comment puis-je supprimer efficacement les caractères non alphanumériques des chaînes dans MySQL ?

Comment puis-je supprimer efficacement les caractères non alphanumériques des chaînes dans MySQL ?

Susan Sarandon
Libérer: 2024-11-30 16:30:12
original
479 Les gens l'ont consulté

How Can I Efficiently Remove Non-Alphanumeric Characters from Strings in MySQL?

Suppression des caractères non alphanumériques des chaînes dans MySQL

Problème :

Lors de la comparaison de chaînes dans MySQL, l'efficacité peut être améliorée en supprimant tous les caractères non alphanumériques. Actuellement, plusieurs fonctions REPLACE sont utilisées, mais une solution plus efficace et plus élégante est recherchée.

Solution :

Pour MySQL 8.0 ou supérieur :

MySQL prend désormais en charge le remplacement Regex, ce qui permet de supprimer les caractères non alphanumériques avec un seul déclaration :

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Copier après la connexion

Pour MySQL 5.7 ou version antérieure :

La prise en charge des expressions régulières n'est pas disponible. Une fonction personnalisée, « alphanum », peut être créée pour effectuer la suppression des caractères :

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 ;
Copier après la connexion

Cette fonction peut ensuite être utilisée pour supprimer les caractères non alphanumériques des chaînes :

select 'This works finally!', alphanum('This works finally!');
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal