Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso sostituire le parentesi con i trattini all'interno della funzione Oracle REGEXP_REPLACE?

Per sostituire i simboli, usa TRANSLATE funzione, è meno dispendioso in termini di processore rispetto alle funzioni di espressione regolare:

SQL> SELECT translate ('(<FIO>)', '()[]', '----') replaced FROM dual;

REPLACED
--------
-<FIO>-

Le espressioni regolari sono più versatili e possono fare cose più complesse ma sono più costose. In questo caso, la sostituzione di un carattere con un altro viene eseguita in modo più efficiente da una funzione specializzata. Se vuoi davvero usare le espressioni regolari, puoi usare REGEXP_REPLACE :

SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 0) reg FROM dual;

REG
---------
--<FIO>--

Aggiornamento:se desideri sostituire solo il primo simbolo, la traduzione non funzionerà. Invece, usa:

SQL> SELECT regexp_replace ('[(<FIO>)]', '[]()[]', '-', 1, 1) reg FROM dual;

REG
---------
-(<FIO>)]