首頁 >資料庫 >mysql教程 >如何有效地從 MySQL 字串中刪除非字母數字字元?

如何有效地從 MySQL 字串中刪除非字母數字字元?

Susan Sarandon
Susan Sarandon原創
2024-11-30 16:30:12471瀏覽

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

從MySQL 中的字符串中剝離非字母數字字符

問題:

比較字串時在MySQL 中,可以透過刪除所有非字母數字字元來提高效率。目前正在使用多個 REPLACE 函數,但正在尋求更有效率、更優雅的解決方案。

解決方案:

對於 MySQL 8.0 或更高版本:

MySQL現在支援正規表示式替換,可以使用單字刪除非字母數字字元語句:

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

對於MySQL 5.7 或更低版本:

正規表示式支援不可用。可以建立自訂函數「alphanum」來執行字元剝離:

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 ;

然後可以使用此函數從字串中剝離非字母數字字元:

select 'This works finally!', alphanum('This works finally!');

以上是如何有效地從 MySQL 字串中刪除非字母數字字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn