sql >> Database >  >> RDS >> Oracle

reguliere expressie speciaal teken eliminatie

select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[^[:alnum:]]') as output
from   dual
;

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

INPUT         OUTPUT
------------  ------
11dd$%example@sqldat.com  $%example@sqldat.com



  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