sql >> Database >  >> RDS >> Mysql

MySQL strip niet-numerieke tekens om te vergelijken

Ik realiseer me dat dit een oud onderwerp is, maar bij het googlen van dit probleem kon ik geen eenvoudige oplossing vinden (ik zag de eerbiedwaardige agenten maar denk dat dit een eenvoudigere oplossing is), dus hier is een functie die ik heb geschreven en die redelijk goed lijkt te werken.

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. Oracle PL/SQL:controleren of BLOB of CLOB leeg is

  2. Wat is Ongedaan maken en opnieuw doen in de Oracle-database?

  3. Query vergelijken van datums in SQL

  4. SQL:in clausule in opgeslagen procedure:hoe waarden doorgeven