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