Oracle
 sql >> Base de données >  >> RDS >> Oracle

élimination des caractères spéciaux dans les expressions régulières

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]