ホームページ > データベース > mysql チュートリアル > MySQL の文字列から英数字以外の文字を効率的に削除するにはどうすればよいですか?

MySQL の文字列から英数字以外の文字を効率的に削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 16:30:12
オリジナル
479 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート