Heim >Datenbank >MySQL-Tutorial >Wie kann ich für MySQL-Vergleiche nicht numerische Zeichen effizient aus Zeichenfolgen entfernen?

Wie kann ich für MySQL-Vergleiche nicht numerische Zeichen effizient aus Zeichenfolgen entfernen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-06 21:11:16470Durchsuche

How Can I Efficiently Strip Non-Numeric Characters from Strings for MySQL Comparisons?

Entfernen nicht-numerischer Zeichen beim MySQL-String-Vergleich

Beim Vergleich von Strings in MySQL ist es oft notwendig, nicht-numerische Zeichen zu entfernen, die dies könnten das Spiel stören. Um diesen Vorgang auszuführen, können wir uns nicht direkt auf PHP-Funktionen wie preg_replace in MySQL-Abfragen verlassen.

Stattdessen können wir eine benutzerdefinierte MySQL-Funktion erstellen, um nichtstellige Zeichen aus einer bestimmten Zeichenfolge zu entfernen. Hier ist eine Beispielfunktion:

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

Diese Funktion nimmt eine VARCHAR-Eingabe und durchläuft jedes Zeichen und prüft, ob es eine Ziffer ist. Wenn dies der Fall ist, wird das Zeichen an die Ausgabevariable angehängt.

Mit dieser Funktion können wir nicht numerische Zeichen aus einer Zeichenfolge entfernen und sie wie folgt zum Vergleich mit numerischen Werten in unserer MySQL-Abfrage verwenden :

SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'

Das obige ist der detaillierte Inhalt vonWie kann ich für MySQL-Vergleiche nicht numerische Zeichen effizient aus Zeichenfolgen entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn