Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menghapus semua karakter numerik non-alfa dari string di MySQL?

Menggunakan MySQL 8.0 atau lebih tinggi

Atas perkenan michal.jakubeczy's answer di bawah, diganti dengan Regex sekarang didukung oleh MySQL:

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

Menggunakan MySQL 5.7 atau lebih rendah

Regex tidak didukung di sini. Saya harus membuat fungsi saya sendiri yang disebut alphanum yang menghapus karakter untuk saya:

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 ; 

Sekarang saya bisa melakukan:

select 'This works finally!', alphanum('This works finally!');

dan saya mendapatkan:

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

Hore!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WEEK() Contoh – MySQL

  2. MySQL:NULL vs

  3. Format Angka sebagai Persentase di MySQL

  4. Mencegah injeksi SQL di Node.js

  5. Permintaan tabel pivot MySQL dengan kolom dinamis