sql >> Base de Datos >  >> RDS >> Mysql

MySQL tira caracteres no numéricos para comparar

Me doy cuenta de que este es un tema antiguo, pero al buscar en Google este problema no pude encontrar una solución simple (vi a los venerables agentes, pero creo que esta es una solución más simple), así que aquí hay una función que escribí, parece funcionar bastante 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
$$