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
Susan Sarandonoriginal
2024-11-30 16:30:12477parcourir

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À-ÿ ]', '')

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 ;

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!');

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!

Déclaration:
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