REGEXP_REPLACE extiende la funcionalidad de la función REPLACE mediante la búsqueda de patrones de texto usándo expresiones regulares, las cuales fueron introducidas a partir de ORACLE 10g.

Para reemplazar multiples espacios por uno solo en una cadena de texto en Oracle pueden hacerlo de múltiples maneras:

Noten que en este ejemplo, hay dos espacios previo al asterisco “*”.


SELECT REGEXP_REPLACE('Reemplazar multiples  espacios   con    un     solo      espacio       en        ORACLE', '  *', ' ')
FROM dual;
REGEXP_REPLACE('REEMPLAZARMULTIPLESESPACIOSCONUNSOLOESPACIO ----------------------------------------------------------- Reemplazar multiples espacios con un solo espacio en ORACLE

 

Aquí otra manera de hacerlo, esta vez usando intérvalos:


SELECT REGEXP_REPLACE('Reemplazar multiples  espacios   con    un     solo      espacio       en        ORACLE', ' {2,}', ' ')
FROM dual;

Otro ejemplo, esta vez usando metacaracteres posix -noten que [:space:] equivale a cualquier caracter no imprimible como espacio, TAB (tabulación), CR (retorno de carro),  LF (nueva línea), FF (salto de página) y VT (tabulación vertical):


SELECT REGEXP_REPLACE('Reemplazar multiples  espacios   con    un     solo      espacio       en        ORACLE', '[[:space:]][[:space:]]*', ' ')
FROM dual;

Por último, usando metacaracteres posix e intérvalos:


SELECT REGEXP_REPLACE('Reemplazar multiples  espacios   con    un     solo      espacio       en        ORACLE', '[[:space:]]{2,}', ' ')
FROM dual;

Como pueden ver, las funciones de expresiones regulares nos pueden ahorrar una gran cantidad de esfuerzo. Si desean conseguir más información acerca de su uso, les recomiendo empezar por la documentación de Oracle.

Usando expresiones Regulares con Oracle 10g