sql >> Databáze >  >> RDS >> Oracle

eliminace speciálních znaků regulárního výrazu

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

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

[:alnum:] je zkratka pro všechna písmena (standardní písmena ASCII, malá a velká písmena) a všechny číslice. [^ ... ] znamená vše KROMĚ ... . Takže toto nahradí vše KROMĚ písmen a číslic... ničím (protože jsme třetí argument nedali REGEXP_REPLACE).

UPRAVIT :OP přidal k otázce druhou část.

Pokud je úkolem odstranit POUZE všechny alfanumerické znaky a zachovat vše ostatní, jednoduše odstraňte ^ z regulárního výrazu.

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

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



  1. Stav zobrazení MySQL – aktivní nebo celkový počet připojení?

  2. Migrace databází SQL pomocí příkazového řádku

  3. Převeďte místní datum a čas (s časovým pásmem) na unixové časové razítko v Oracle

  4. Výkon MySQL Insert klesá na velkém stole