Función REGEXP_REPLACE en PostgreSQL

La función REGEXP_REPLACE en PostgreSQL permite sustituir partes de una cadena que coincidan con una expresión regular específica por un nuevo valor. Esta función es útil cuando se necesita realizar reemplazos en textos de manera flexible, ya que trabaja con patrones y no solo con coincidencias exactas. A través de esta función, es posible realizar modificaciones precisas y complejas sobre los datos almacenados en una base de datos.

Englobada dentro de las funciones de cadena de PostgreSQL, REGEXP_REPLACE ofrece una poderosa herramienta para la manipulación de texto, permitiendo reemplazar no solo subcadenas exactas, sino también aquellas que siguen un patrón determinado. Esto la convierte en una opción ideal para tareas que requieren flexibilidad, como la limpieza de datos o la actualización de valores en múltiples registros.

A continuación, se mostrará la sintaxis y algunos ejemplos prácticos de cómo utilizar la función REGEXP_REPLACE.

Para más información, puedes consultar la documentación oficial de PostgreSQL.

Sintaxis

La sintaxis para utilizar la función REGEXP_REPLACE en PostgreSQL es la siguiente:

REGEXP_REPLACE(cadena, patrón, reemplazo [, indicador])
  • REGEXP_REPLACE: es el nombre de la función.
  • cadena: cadena a buscar.
  • patrón: expresión regular.
  • reemplazo: cadena por la que se sustituirá.
  • indicador: parámetro para indicar opciones, en la mayoría de casos se utiliza el indicador g, ya que de lo contrario solo devolvería un resultado.

Ejemplo

Cambiar orden de palabras

En el siguiente ejemplo puedes observar como la columna nombre de la tabla empleados contiene el nombre y el apellido del empleado, pero necesitamos convertirlo al formato, apellido, nombre:

SELECT 	nombre, 
        REGEXP_REPLACE(nombre,'(.*) (.*)','\2, \1')
from empleados;
Función REGEXP_REPLACE en PostgreSQL

Eliminar letras

En el siguiente ejemplo eliminamos las letras del texto ‘ABC12345xyz’. :

SELECT REGEXP_REPLACE('ABC12345xyz','[[:alpha:]]','','g');
  • [[:alpha:]]: coincide con cualquier letra.
  • »; sustituimos las letras encontradas por un vacío.
  • g: para que sustituya todas las letras que encuentre, no solo la primera.

Eliminar dígitos

En el siguiente ejemplo eliminamos los dígitos del texto ‘ABC12345xyz’. :

SELECT REGEXP_REPLACE('ABC12345xyz','[[:digit:]]','','g');
  • [[:digit:]]: coincide con cualquier dígito.
  • »; sustituimos los dígitos encontradas por un vacío.
  • g: para que sustituya todas las letras que encuentre, no solo la primera.

Eliminar espacios

En el siguiente ejemplo eliminamos los espacios cuando hay más de uno seguido:

SELECT REGEXP_REPLACE('Miguel  Troyano      no sabe    escribir','( ){2,}',' ','g');
  • ‘( ){2,}’: busca el espacio cuando ocurra más de dos veces seguidas.
  • ‘ ‘; sustituimos cuando encuentre un resultado por un espacio.
  • g: para que sustituya todas las veces que lo encuentra.

Escribir un comentario