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:] är en stenografi för alla bokstäver (standard ASCII-bokstäver, gemener och versaler) och alla siffror. [^ ... ] betyder allt UTOM ... . Så detta kommer att ersätta allt UTOM bokstäver och siffror med... ingenting (eftersom vi inte gav ett tredje argument till REGEXP_REPLACE).
REDIGERA :OP lade till en andra del till frågan.
Om uppdraget är att ENDAST ta bort alla alfanumeriska tecken och behålla allt annat, ta helt enkelt bort ^ från det reguljära uttrycket.
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