För att ersätta symboler, använd ÖVERSÄTT
funktion, den är mindre processorkrävande än reguljära uttrycksfunktioner:
SQL> SELECT translate ('(<FIO>)', '()[]', '----') replaced FROM dual;
REPLACED
--------
-<FIO>-
Reguljära uttryck är mer mångsidiga och kan göra mer komplexa saker men är dyrare. I det här fallet sker ersättning av ett tecken med ett annat mer effektivt av en specialiserad funktion. Om du verkligen vill använda reguljära uttryck kan du använda REGEXP_REPLACE
:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 0) reg FROM dual;
REG
---------
--<FIO>--
Uppdatering:Om du bara vill ersätta den första symbolen, fungerar inte översättning. Använd istället:
SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 1) reg FROM dual;
REG
---------
-(<FIO>)]