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
Barbara StreisandOriginal
2024-12-01 14:18:13747Durchsuche

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À-ÿ ]', '')

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 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!');

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!

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