select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%[email protected] 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$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%[email protected] $%[email protected]