MySQL の文字列から英数字以外の文字を削除する
問題:
文字列を比較するときMySQL では、英数字以外の文字をすべて削除することで効率を向上させることができます。現在、複数の REPLACE 関数が使用されていますが、より効率的で洗練されたソリューションが求められています。
解決策:
MySQL 8.0 以降の場合:
MySQL は Regex 置換をサポートするようになり、単一の操作で英数字以外の文字を削除できるようになりました。ステートメント:
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 中国語 Web サイトの他の関連記事を参照してください。