sql >> Databasteknik >  >> RDS >> Oracle

eliminering av reguljära uttryck specialtecken

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

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

[:alnum:] är en stenografi för alla bokstäver (standard ASCII-bokstäver, gemener och versaler) och alla siffror. [^ ... ] betyder allt UTOM ... . Så detta kommer att ersätta allt UTOM bokstäver och siffror med... ingenting (eftersom vi inte gav ett tredje argument till REGEXP_REPLACE).

REDIGERA :OP lade till en andra del till frågan.

Om uppdraget är att ENDAST ta bort alla alfanumeriska tecken och behålla allt annat, ta helt enkelt bort ^ från det reguljära uttrycket.

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

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



  1. Vilka är de optimala varchar-storlekarna för MySQL?

  2. Datum mellan 2 andra datum, utan hänsyn till årtal

  3. SQL Server 2017:Importera CSV-data från Linux till Salesforce med SSIS

  4. Allmänt fel:1005 när du skapar en nyckelbegränsning - Laravel