Aby zastąpić symbole, użyj TRANSLATE
funkcja, jest mniej obciążająca procesor niż funkcje wyrażeń regularnych:
SQL> SELECT translate ('(<FIO>)', '()[]', '----') replaced FROM dual;
REPLACED
--------
-<FIO>-
Wyrażenia regularne są bardziej wszechstronne i mogą robić bardziej złożone rzeczy, ale są droższe. W takim przypadku zamiana jednego znaku na inny jest bardziej efektywna dzięki wyspecjalizowanej funkcji. Jeśli naprawdę chcesz używać wyrażeń regularnych, możesz użyć REGEXP_REPLACE
:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 0) reg FROM dual;
REG
---------
--<FIO>--
Aktualizacja:jeśli chcesz zastąpić tylko pierwszy symbol, tłumaczenie nie zadziała. Zamiast tego użyj:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 1) reg FROM dual;
REG
---------
-(<FIO>)]