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]