select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%example@sqldat.com 11dde11h
[:alnum:] adalah singkatan untuk semua huruf (huruf ASCII standar, huruf kecil dan besar) dan semua angka. [^ ... ] berarti semuanya KECUALI ... . Jadi, ini akan menggantikan semuanya KECUALI huruf dan angka dengan... tidak ada (karena kami tidak memberikan argumen ketiga untuk REGEXP_REPLACE).
EDIT :OP menambahkan bagian kedua ke pertanyaan.
Jika tugasnya adalah untuk menghapus semua karakter alfanumerik HANYA, dan untuk menyimpan yang lainnya, cukup hapus ^ dari ekspresi reguler.
select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%example@sqldat.com $%example@sqldat.com