Heim >Datenbank >MySQL-Tutorial >Wie kann ich für MySQL-Vergleiche nicht numerische Zeichen effizient aus Zeichenfolgen entfernen?
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!