PostgreSQL Reemplazar cadenas

Joy Idialu 30 enero 2023
  1. Reemplazar cadenas usando la función replace() en PostgreSQL
  2. Reemplazar cadenas usando la función regexp_replace() en PostgreSQL
  3. Más ejemplos de la función replace() de PostgreSQL
PostgreSQL Reemplazar cadenas

Este tutorial explica cómo reemplazar cadenas usando la función replace() de PostgreSQL.

Reemplazar cadenas usando la función replace() en PostgreSQL

La función replace() de PostgreSQL tiene los siguientes parámetros que son todos del tipo texto:

replace (string text, from text, to text)

El parámetro string es el texto fuente sobre el que se realiza la función replace(). El parámetro from es una subcadena del argumento string y representa la parte que se va a cambiar.

El parámetro to representa la subcadena del argumento string a la que se cambiará el argumento from.

Por ejemplo, cambiemos la palabra Catfish a Turtle usando la función replace(), como se muestra aquí:

SELECT replace ('Catfish', 'Catfish', 'Turtle');

El resultado es:

 replace
---------
 Turtle

Reemplacemos la subcadena Cat en Catfish con Jelly, como se muestra aquí:

SELECT replace('Catfish', 'Cat', 'Jelly');

El resultado es:

  replace
-----------
 Jellyfish

Esta función también se puede usar para reemplazar caracteres especiales en una cadena. Por ejemplo, reemplazar un espacio en blanco con una coma, como se muestra aquí:

SELECT replace('A B C D E', ' ', ',');

El resultado es:

  replace
-----------
 A,B,C,D,E

Digamos que tenemos un texto de caracteres aleatorios y queremos reemplazar cada aparición del carácter a con b independientemente de si el carácter a está en mayúsculas o minúsculas. Si ejecutamos este comando, como se muestra aquí:

SELECT replace('agAdavA', 'a', 'b');

El resultado es:

 replace
---------
 bgAdbvA

El resultado que se muestra arriba no satisface el requisito de reemplazar todas las apariciones de a mayúscula y minúscula por b, ya que solo se reemplazaron las apariciones de a minúscula. Por lo tanto, tendríamos que introducir la función regexp_replace() de PostgreSQL.

Reemplazar cadenas usando la función regexp_replace() en PostgreSQL

La función regexp_replace() de PostgreSQL tiene los siguientes parámetros que son todos del tipo texto:

regexp_replace (string text, pattern text, replacement text [,flags text])

El argumento string es la cadena de origen en la que se realiza la función de reemplazo. El parámetro pattern representa la expresión regular para la que debe haber una coincidencia antes de que se pueda reemplazar una subcadena del argumento de cadena.

El parámetro replacement representa el texto al que estamos cambiando la subcadena del argumento de cadena. El parámetro flags representa el texto que se puede usar para cambiar el comportamiento de la función regexp_replace().

En el ejemplo anterior, donde necesitábamos cambiar todas las mayúsculas y minúsculas de a a b, podemos usar la función regexp_replace(), como se muestra aquí:

SELECT regexp_replace('agAdavA', '[a | A]+', 'b', 'g');

El resultado es:

 regexp_replace
----------------
 bgbdbvb

Con la introducción de la expresión regular, todas las apariciones de a mayúsculas y minúsculas se reemplazaron según fuera necesario. El indicador g garantiza que se reemplacen todas las apariciones y no solo la primera aparición de a.

Aquí está la documentación de PostgreSQL sobre coincidencia de patrones.

Más ejemplos de la función replace() de PostgreSQL

Digamos que tenemos una tabla con una columna llamada text compuesta de palabras individuales, como se muestra aquí:

id text
1 Red
2 Green
3 Blue
4 Red
5 Red

Y queremos reemplazar cada aparición de la palabra Red con Yellow. Podemos usar la función replace(), como se muestra aquí:

UPDATE demo SET text = replace(text, 'Red', 'Yellow');

El resultado es:

 id |  text
----+--------
  1 | Yellow
  2 | Green
  3 | Blue
  4 | Yellow
  5 | Yellow

Digamos, en la misma tabla, tenemos palabras con caracteres especiales en el campo text, como se muestra aquí:

id text
6 g-r-e-e-n
7 1-23–4
8 one-and-two
9 —n—2—
10 —–

Y queremos reemplazar todas las apariciones del guión (-) por guión bajo (_). La función replace() puede lograr eso, como se muestra aquí:

UPDATE demo SET text = replace(text, '-', '_');

El resultado es:

 id |    text
----+-------------
  6 | g_r_e_e_n
  7 | 1_23__4
  8 | one_and_two
  9 | ___n___2___
 10 | _____

Si insertamos más registros en la tabla de modo que el campo text tenga oraciones en lugar de una sola palabra, como se muestra aquí:

id text
11 She bought a red bag
12 Green is a good color
13 The sky is blue
14 The color of the shirt is red
15 They plan to go with blue or red balloons

Y queremos reemplazar la palabra red por yellow. Esto se puede lograr usando la función replace(), como se muestra aquí:

UPDATE demo SET text = replace(text, 'red', 'yellow');

El resultado es:

 id |                     text
----+----------------------------------------------
 11 | She bought a yellow bag
 12 | Green is a good color
 13 | The sky is blue
 14 | The color of the shirt is yellow
 15 | They plan to go with blue or yellow balloons

Para seguir, aquí están los comandos para ejecutar:

--CREATE statement
CREATE TABLE demo (
  id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  text TEXT NOT NULL
);

--insert first set of records
INSERT INTO demo (text)
VALUES
  ('Red'),
  ('Green'),
  ('Blue'),
  ('Red'),
  ('Red');

--insert second set of records
INSERT INTO demo (text)
VALUES
  ('g-r-e-e-n'),
  ('1-23--4'),
  ('one-and-two'),
  ('---n---2---'),
  ('-----');

--insert third and final set of records
INSERT INTO demo (text)
VALUES
  ('She bought a red bag'),
  ('Green is a good color'),
  ('The sky is blue'),
  ('The color of the shirt is red'),
  ('They plan to go with blue or red balloons');

--update statements that include the REPLACE function
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
UPDATE demo SET text = replace(text, '-', '_');
UPDATE demo SET text = replace(text, 'red', 'yellow');

--view all the changes
SELECT * FROM demo;

En este tutorial, hemos discutido cómo reemplazar cadenas usando las funciones replace() y regexp_replace de PostgreSQL y cómo se puede usar la función replace() para actualizar cadenas en una tabla.

Artículo relacionado - PostgreSQL String