sql >> Database >  >> RDS >> Oracle

reguliere expressie speciaal teken eliminatie

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

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

[:alnum:] is een afkorting voor alle letters (standaard ASCII-letters, kleine letters en hoofdletters) en alle cijfers. [^ ... ] betekent alles BEHALVE ... . Dit vervangt dus alles BEHALVE letters en cijfers door... niets (aangezien we geen derde argument aan REGEXP_REPLACE hebben gegeven).

BEWERKEN :De OP heeft een tweede deel aan de vraag toegevoegd.

Als de opdracht is om ALLEEN alle alfanumerieke tekens te verwijderen en al het andere te behouden, verwijder dan gewoon de ^ van de reguliere expressie.

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

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



  1. Slaapstand genereren van twee verschillende sequentie-ID's voor PostgreSQL-insertie

  2. NHL-standen uit XML-tabel halen met PHP

  3. Hoe versleutel ik wachtwoorden met PostgreSQL?

  4. Postgres dynamische queryfunctie