PostgreSQL Reemplazar cadenas
-
Reemplazar cadenas usando la función
replace()
en PostgreSQL -
Reemplazar cadenas usando la función
regexp_replace()
en PostgreSQL -
Más ejemplos de la función
replace()
de PostgreSQL
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.