Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich Klammern durch Bindestriche in der Oracle REGEXP_REPLACE-Funktion ersetzen?

Verwenden Sie zum Ersetzen von Symbolen den TRANSLATE Funktion ist sie weniger prozessorintensiv als reguläre Ausdrucksfunktionen:

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

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

Reguläre Ausdrücke sind vielseitiger und können komplexere Dinge tun, sind aber teurer. In diesem Fall wird das Ersetzen eines Zeichens durch ein anderes effizienter durch eine spezialisierte Funktion durchgeführt. Wenn Sie wirklich reguläre Ausdrücke verwenden möchten, können Sie REGEXP_REPLACE :

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

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

Update:Wenn Sie nur das erste Symbol ersetzen möchten, funktioniert die Übersetzung nicht. Verwenden Sie stattdessen:

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

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