Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách xóa tất cả ký tự không phải chữ số khỏi chuỗi trong MySQL?


Các ký tự không phải chữ số (non-alphanumeric) bao gồm: @, !, #, &, (, ), ?, /

MySQL không có hàm sẵn để xóa ký tự non-alphanumeric. Chúng ta tạo hàm tự định nghĩa:

Tạo hàm RemoveNonAlphaNumeric

mysql> DELIMITER //
mysql> CREATE FUNCTION RemoveNonAlphaNumeric(s CHAR(255))
    -> RETURNS CHAR(255) DETERMINISTIC
    -> BEGIN
    -> DECLARE var1, length SMALLINT DEFAULT 1;
    -> DECLARE result CHAR(255) DEFAULT '';
    -> DECLARE ch CHAR(1);
    -> SET length = CHAR_LENGTH(s);
    -> REPEAT
    -> BEGIN
    -> SET ch = MID(s, var1, 1);
    -> IF ch REGEXP '[[:alnum:]]' THEN
    -> SET result = CONCAT(result, ch);
    -> END IF;
    -> SET var1 = var1 + 1;
    -> END;
    -> UNTIL var1 > length END REPEAT;
    -> RETURN result;
    -> END //
Query OK, 0 rows affected (0.10 sec)

Kiểm tra hàm

mysql> DELIMITER ;
mysql> SELECT 'My Email id is test@123!', RemoveNonAlphaNumeric('My Email id is test@123!');
+--------------------------+---------------------------------------------------+
| My Email id is test@123! | RemoveNonAlphaNumeric('My Email id is test@123!') |
+--------------------------+---------------------------------------------------+
| My Email id is test@123! | MyEmailidistest123                                |
+--------------------------+---------------------------------------------------+
1 row in set (0.15 sec)

Kết quả MyEmailidistest123 không còn ký tự @ và !, hàm hoạt động đúng.