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:] ist eine Abkürzung für alle Buchstaben (Standard-ASCII-Buchstaben, Klein- und Großbuchstaben) und alle Ziffern. [^ ... ] bedeutet alles AUSSER ... . Also wird alles AUSSER Buchstaben und Ziffern durch ... nichts ersetzt (da wir REGEXP_REPLACE kein drittes Argument gegeben haben).
BEARBEITEN :Das OP hat der Frage einen zweiten Teil hinzugefügt.
Wenn die Zuweisung darin besteht, NUR alle alphanumerischen Zeichen zu entfernen und alles andere beizubehalten, entfernen Sie einfach den ^ aus dem regulären Ausdruck.
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