MySQL の文字列から英数字以外の文字を効率的に削除する
MySQL では、文字列の比較はパフォーマンスを重視するタスクになる可能性があります。効率を最適化するには、比較を実行する前に英数字以外の文字を削除すると有益なことがよくあります。正規表現機能の利用やカスタム関数の作成など、これを達成するためのさまざまなアプローチを検討してみましょう。
MySQL 8.0 以降: Regex の利用
MySQL 8.0 以降のバージョンでは、 regex (正規表現) を使用して、英数字以外の文字を置き換えることができます。次の SQL ステートメントは、このアプローチを示しています。
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
このステートメントでは、正規表現 [^0-9a-zÀ-ÿ ] は、数字、文字、スペース、またはアクセント記号付き文字ではない任意の文字と一致します。
MySQL 5.7 以前: カスタムの作成Function
以前の 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 中国語 Web サイトの他の関連記事を参照してください。