Computer >> Máy Tính >  >> Lập trình >> MySQL

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

Các ký tự không phải chữ và số như sau -

@,!,#,&,(),?, /

Không có hàm sẵn có để loại bỏ các ký tự không phải chữ và số khỏi một chuỗi trong MySQL. Do đó, chúng tôi tạo một hàm loại bỏ tất cả các ký tự không phải chữ và số. Khai báo và định nghĩa hàm như sau.

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)

Hàm có tên ‘RemoveNonAlphaNumeric’ loại bỏ tất cả các ký tự không phải chữ và số khỏi một chuỗi. Để kiểm tra, bây giờ chúng ta sẽ gọi hàm do người dùng xác định.

mysql>delimiter ;
mysql>  select 'My Email id is test@123!',RemoveNonAlphaNumeric('My Email id is test@123!');

Sau đây là kết quả hiển thị việc loại bỏ thành công các ký tự chữ và số bằng chức năng “RemoveNonAlphaNumeric”.

+--------------------------+---------------------------------------------------+
| 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)

Trong chuỗi này (MyEmailidistest123), không có @ và! ký hiệu ngay bây giờ, có nghĩa là chức năng đang hoạt động chính xác.