Oracle
 sql >> Database >  >> RDS >> Oracle

eliminazione dei caratteri speciali delle espressioni regolari

select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT 
------------  --------
11dd$%[email protected]  11dde11h

[:alnum:] è un'abbreviazione per tutte le lettere (lettere ASCII standard, minuscole e maiuscole) e tutte le cifre. [^ ... ] significa tutto TRANNE ... . Quindi, questo sostituirà tutto TRANNE lettere e cifre con... niente (dal momento che non abbiamo fornito un terzo argomento a REGEXP_REPLACE).

MODIFICA :L'OP ha aggiunto una seconda parte alla domanda.

Se il compito è rimuovere SOLO tutti i caratteri alfanumerici e conservare tutto il resto, è sufficiente rimuovere il ^ dall'espressione regolare.

select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from   dual
;

INPUT         OUTPUT
------------  ------
11dd$%[email protected]  $%[email protected]