sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo reemplazar corchetes por guiones dentro de la función Oracle REGEXP_REPLACE?

Para reemplazar símbolos, use el TRANSLATE función, es menos intensiva en el procesador que las funciones de expresión regular:

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

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

Las expresiones regulares son más versátiles y pueden hacer cosas más complejas pero son más caras. En este caso, la sustitución de un carácter por otro se realiza de manera más eficiente mediante una función especializada. Si realmente quiere usar expresiones regulares, puede usar REGEXP_REPLACE :

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

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

Actualización:si desea reemplazar solo el primer símbolo, la traducción no funcionará. En su lugar, utilice:

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

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