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

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

Susan Sarandon
Susan SarandonOriginal
2024-11-30 16:30:12552Durchsuche

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

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!

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