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:] est un raccourci pour toutes les lettres (lettres ASCII standard, minuscules et majuscules) et tous les chiffres. [^ ... ] signifie tout SAUF ... . Donc, cela remplacera tout SAUF les lettres et les chiffres par... rien (puisque nous n'avons pas donné de troisième argument à REGEXP_REPLACE).
MODIFIER :L'OP a ajouté une deuxième partie à la question.
Si l'affectation consiste à supprimer UNIQUEMENT tous les caractères alphanumériques et à conserver tout le reste, supprimez simplement le ^ à partir de l'expression régulière.
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