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

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

Barbara Streisand
發布: 2024-12-01 14:18:13
原創
720 人瀏覽過

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

從MySQL 中的字串中高效刪除非字母數字字元

在MySQL 中,比較字串可能是一項效能密集型任務。為了優化效率,在執行比較之前刪除非字母數字字元通常是有益的。讓我們探索實現此目的的不同方法,包括利用正規表示式功能和建立自訂函數。

MySQL 8.0 及更高版本:利用正規表示式

使用MySQL 8.0 或更高版本,您可以使用regex(正規表示式)來取代非字母表達式數字字元。以下SQL 語句示範了這個方法:

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

在此語句中,正規表示式[^0-9a-zÀ-ÿ ] 符合數字、字母、空格或重音字元以外的任何字元。

MySQL 5.7 及更低版本:建立自訂函數

對於早期版本MySQL 版本(5.7 或更低),正規表示式功能不可用。作為替代方案,您可以建立一個刪除非字母數字字元的自訂函數。這是一個範例實作:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板