Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL supprime les caractères non numériques à comparer

Je me rends compte qu'il s'agit d'un sujet ancien, mais en cherchant sur Google ce problème, je n'ai pas trouvé de solution simple (j'ai vu les vénérables agents mais je pense que c'est une solution plus simple), alors voici une fonction que j'ai écrite et qui semble fonctionner assez bien.

DROP FUNCTION IF EXISTS STRIP_NON_DIGIT;
DELIMITER $$
CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255))
   RETURNS VARCHAR(255)
BEGIN
   DECLARE output   VARCHAR(255) DEFAULT '';
   DECLARE iterator INT          DEFAULT 1;
   WHILE iterator < (LENGTH(input) + 1) DO
      IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN
         SET output = CONCAT(output, SUBSTRING(input, iterator, 1));
      END IF;
      SET iterator = iterator + 1;
   END WHILE;
   RETURN output;
END
$$