select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%[email protected] 11dde11h
[:alnum:]
là viết tắt cho tất cả các chữ cái (chữ cái chuẩn ASCII, chữ thường và chữ hoa) và tất cả các chữ số. [^ ... ]
có nghĩa là mọi thứ NGOẠI TRỪ ...
. Vì vậy, điều này sẽ thay thế mọi thứ NGOẠI TRỪ các chữ cái và chữ số bằng ... không có gì (vì chúng tôi không đưa ra đối số thứ ba cho REGEXP_REPLACE).
CHỈNH SỬA :OP đã thêm phần thứ hai vào câu hỏi.
Nếu nhiệm vụ là CHỈ xóa tất cả các ký tự chữ và số và giữ lại mọi thứ khác, chỉ cần xóa ^
từ biểu thức chính quy.
select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%[email protected] $%[email protected]