Nicht-alphanumerische Zeichen aus Zeichenfolgen in MySQL entfernen
Problem:
Beim Vergleich von Zeichenfolgen In MySQL kann die Effizienz verbessert werden, indem alle nicht alphanumerischen Zeichen entfernt werden. Derzeit werden mehrere REPLACE-Funktionen verwendet, es wird jedoch nach einer effizienteren und eleganteren Lösung gesucht.
Lösung:
Für MySQL 8.0 oder höher:
MySQL unterstützt jetzt die Regex-Ersetzung, wodurch es möglich ist, nicht-alphanumerische Zeichen mit einem einzigen zu entfernen Aussage:
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Für MySQL 5.7 oder niedriger:
Regex-Unterstützung ist nicht verfügbar. Eine benutzerdefinierte Funktion, „alphanum“, kann erstellt werden, um die Zeichenentfernung durchzuführen:
DROP FUNCTION IF EXISTS alphanum; DELIMITER | CREATE FUNCTION alphanum( str CHAR(255) ) RETURNS CHAR(255) DETERMINISTIC BEGIN DECLARE i, len SMALLINT DEFAULT 1; DECLARE ret CHAR(255) DEFAULT ''; DECLARE c CHAR(1); IF str IS NOT NULL THEN SET len = CHAR_LENGTH( str ); REPEAT BEGIN SET c = MID( str, i, 1 ); IF c REGEXP '[[:alnum:]]' THEN SET ret=CONCAT(ret,c); END IF; SET i = i + 1; END; UNTIL i > len END REPEAT; ELSE SET ret=''; END IF; RETURN ret; END | DELIMITER ;
Diese Funktion kann dann verwendet werden, um nicht alphanumerische Zeichen aus Zeichenfolgen zu entfernen:
select 'This works finally!', alphanum('This works finally!');
Das obige ist der detaillierte Inhalt vonWie kann ich nicht-alphanumerische Zeichen effizient aus Zeichenfolgen in MySQL entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!