sql >> データベース >  >> RDS >> Mysql

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

    MySQL8.0以降を使用する

    以下のmichal.jakubeczyの回答のおかげで、正規表現への置き換えがMySQLでサポートされるようになりました:

    UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zA-Z ]', '')
    

    MySQL5.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!');
    

    そして私は得る:

    +---------------------+---------------------------------+
    | This works finally! | alphanum('This works finally!') |
    +---------------------+---------------------------------+
    | This works finally! | Thisworksfinally                |
    +---------------------+---------------------------------+
    1 row in set (0.00 sec)
    

    やあ!



    1. AnySQLMaestroをSalesforce.comに接続する

    2. SQL Serverに監査証跡を実装する最良の方法は?

    3. ListViewは、sqliteの名前に従ってドローアブルにある正しい画像を表示しません

    4. PostgreSQLの数値の前にプラス/マイナス記号を付ける