Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Eliminierung von Sonderzeichen in regulären Ausdrücken

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

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

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