Heim > Datenbank > MySQL-Tutorial > Wie entferne ich nicht-alphanumerische Zeichen effizient aus Zeichenfolgen in MySQL?

Wie entferne ich nicht-alphanumerische Zeichen effizient aus Zeichenfolgen in MySQL?

Barbara Streisand
Freigeben: 2024-12-01 14:18:13
Original
652 Leute haben es durchsucht

How to Efficiently Remove Non-Alphanumeric Characters from Strings in MySQL?

Effizientes Entfernen nicht-alphanumerischer Zeichen aus Zeichenfolgen in MySQL

In MySQL kann der Vergleich von Zeichenfolgen eine leistungsintensive Aufgabe sein. Um die Effizienz zu optimieren, ist es oft vorteilhaft, nicht-alphanumerische Zeichen vor dem Vergleich zu entfernen. Lassen Sie uns verschiedene Ansätze untersuchen, um dies zu erreichen, einschließlich der Nutzung der Regex-Funktionalität und der Erstellung einer benutzerdefinierten Funktion.

MySQL 8.0 und höher: Verwendung von Regex

Mit MySQL 8.0 oder späteren Versionen Sie können Regex (reguläre Ausdrücke) verwenden, um nicht alphanumerische Zeichen zu ersetzen. Die folgende SQL-Anweisung veranschaulicht diesen Ansatz:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Nach dem Login kopieren

In dieser Anweisung stimmt der reguläre Ausdruck [^0-9a-zÀ-ÿ ] mit jedem Zeichen überein, das keine Zahl, kein Buchstabe, kein Leerzeichen oder kein Akzentzeichen ist.

MySQL 5.7 und niedriger: Erstellen einer benutzerdefinierten Funktion

Für frühere MySQL-Versionen (5.7 oder niedriger) ist die Regex-Funktionalität nicht verfügbar. Alternativ können Sie eine benutzerdefinierte Funktion erstellen, die nicht alphanumerische Zeichen entfernt. Hier ist eine Beispielimplementierung:

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 ;
Nach dem Login kopieren

Nach der Erstellung können Sie diese Funktion verwenden, um nicht alphanumerische Zeichen zu entfernen, wie unten gezeigt:

select 'This works finally!', alphanum('This works finally!');
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage