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:] je zkratka pro všechna písmena (standardní písmena ASCII, malá a velká písmena) a všechny číslice. [^ ... ] znamená vše KROMĚ ... . Takže toto nahradí vše KROMĚ písmen a číslic... ničím (protože jsme třetí argument nedali REGEXP_REPLACE).
UPRAVIT :OP přidal k otázce druhou část.
Pokud je úkolem odstranit POUZE všechny alfanumerické znaky a zachovat vše ostatní, jednoduše odstraňte ^ z regulárního výrazu.
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