Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL usuwa znaki nieliczbowe do porównania

Zdaję sobie sprawę, że to stary temat, ale po googlowaniu tego problemu nie mogłem znaleźć prostego rozwiązania (widziałem czcigodnych agentów, ale myślę, że to prostsze rozwiązanie), więc oto funkcja, którą napisałem, wydaje się działać całkiem dobrze.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać instrukcji CASE w MySQL?

  2. Zapytanie Mysql do dynamicznej konwersji wierszy na kolumny na podstawie dwóch kolumn

  3. JSON_OBJECT() – Utwórz obiekt JSON z listy par klucz/wartość w MySQL

  4. Nie można uzyskać wiosennego rozruchu, aby automatycznie utworzyć schemat bazy danych

  5. Czy MySQL ignoruje wartości null w ograniczeniach unikalnych?