Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để xóa tất cả các ký tự số không phải chữ cái khỏi một chuỗi trong MySQL?

Sử dụng MySQL 8.0 trở lên

Được phép trả lời của michal.jakubeczy bên dưới, được thay thế bởi Regex hiện được hỗ trợ bởi MySQL:

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

Sử dụng MySQL 5.7 trở xuống

Regex không được hỗ trợ ở đây. Tôi đã phải tạo một hàm của riêng mình có tên là alphanum, hàm này loại bỏ các ký tự cho tôi:

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 ; 

Bây giờ tôi có thể làm:

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

và tôi nhận được:

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

Nhanh lên!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự SQL theo số lượng

  2. Lưu trữ hình ảnh trong cơ sở dữ liệu trực tiếp hay dưới dạng dữ liệu base64?

  3. PDO ::fetchAll so với PDO ::tìm nạp trong một vòng lặp

  4. Làm cách nào để thêm cột mới vào bảng MYSQL?

  5. Bộ ký tự và đối chiếu chính xác có nghĩa là gì?