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