MySQL 字串中的高效字元過濾
在比較字串以提高效率時,消除非字母數字字元至關重要。不要使用多個 REPLACE 函數,而是考慮使用替代解決方案。
MySQL 8.0 以上
MySQL 8.0 支援正規表示式替換,讓您可以將非字母數字字元替換為空白字串:
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^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!');
輸出:
+---------------------+---------------------------------+ | This works finally! | alphanum('This works finally!') | +---------------------+---------------------------------+ | This works finally! | Thisworksfinally | +---------------------+---------------------------------+
以上是如何有效率地過濾MySQL字串中的非字母數字字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!