sql >> Databáze >  >> RDS >> Mysql

MySQL odstraňuje nenumerické znaky pro porovnání

Uvědomuji si, že je to prastaré téma, ale po vygooglování tohoto problému jsem nenašel jednoduché řešení (viděl jsem ctihodné agenty, ale myslím si, že je to jednodušší řešení), takže zde je funkce, kterou jsem napsal, a zdá se, že funguje docela dobře.

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. Úplné obnovení clusteru MySQL nebo MariaDB Galera ze zálohy

  2. Třídit podle sloupce ASC, ale nejprve hodnoty NULL?

  3. android.database.CursorIndexOutOfBoundsException

  4. SSL pro připojení Nodejs PostgreSQL