sql >> Databasteknik >  >> RDS >> Mysql

MySQL strippar icke-numeriska tecken för att jämföra

Jag inser att detta är ett uråldrigt ämne men när jag googlade det här problemet kunde jag inte hitta en enkel lösning (jag såg de ärevördiga agenterna men tror att detta är en enklare lösning) så här är en funktion jag skrev, som verkar fungera ganska bra.

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
$$


  1. MySQL:Infoga post om den inte finns i tabellen

  2. Hur använder jag CONCAT-funktionen i SQL Server 2008 R2?

  3. MySQL-fel 1093 - Kan inte ange måltabell för uppdatering i FROM-satsen

  4. Hur BIN() fungerar i MariaDB