select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%[email protected] 11dde11h
[:alnum:]
е стенограма за всички букви (стандартни ASCII букви, малки и главни букви) и всички цифри. [^ ... ]
означава всичко ОСВЕН ...
. Така че това ще замени всичко ОСВЕН букви и цифри с... нищо (тъй като не сме дали трети аргумент на REGEXP_REPLACE).
РЕДАКТИРАНЕ :ОП добави втора част към въпроса.
Ако заданието е да премахнете САМО всички буквено-цифрови знаци и да запазите всичко останало, просто премахнете ^
от регулярния израз.
select '11dd$%[email protected]' as input, regexp_replace('11dd$%[email protected]', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%[email protected] $%[email protected]