PostgreSQL Remplacer les chaînes
-
Remplacer les chaînes à l’aide de la fonction
replace()
dans PostgreSQL -
Remplacer les chaînes à l’aide de la fonction
regexp_replace()
dans PostgreSQL -
Plus d’exemples de fonctions PostgreSQL
replace()
Ce tutoriel explique comment remplacer des chaînes à l’aide de la fonction replace()
de PostgreSQL.
Remplacer les chaînes à l’aide de la fonction replace()
dans PostgreSQL
La fonction PostgreSQL replace()
a les paramètres suivants qui sont tous de type texte :
replace (string text, from text, to text)
Le paramètre string
est le texte source sur lequel la fonction replace()
est exécutée. Le paramètre from
est une sous-chaîne de l’argument string
et représente la partie à modifier.
Le paramètre to
représente la sous-chaîne de l’argument string
en laquelle l’argument from
doit être modifié.
Par exemple, changeons le mot Catfish
en Turtle
en utilisant la fonction replace()
, comme montré ici :
SELECT replace ('Catfish', 'Catfish', 'Turtle');
Le résultat est:
replace
---------
Turtle
Remplaçons la sous-chaîne Cat
dans Catfish
par Jelly
, comme indiqué ici :
SELECT replace('Catfish', 'Cat', 'Jelly');
Le résultat est:
replace
-----------
Jellyfish
Cette fonction peut également être utilisée pour remplacer des caractères spéciaux dans une chaîne. Par exemple, en remplaçant un espace vide par une virgule, comme illustré ici :
SELECT replace('A B C D E', ' ', ',');
Le résultat est:
replace
-----------
A,B,C,D,E
Disons que nous avons un texte de caractères aléatoires et que nous voulons remplacer chaque occurrence du caractère a
par b
, que le caractère a
soit en majuscule ou en minuscule. Si nous exécutons cette commande, comme indiqué ici :
SELECT replace('agAdavA', 'a', 'b');
Le résultat est:
replace
---------
bgAdbvA
Le résultat ci-dessus ne satisfait pas à l’exigence de remplacer toutes les occurrences de a
majuscule et minuscule par b
, car seules les occurrences de a
minuscule ont été remplacées. Il faudrait donc introduire la fonction PostgreSQL regexp_replace()
.
Remplacer les chaînes à l’aide de la fonction regexp_replace()
dans PostgreSQL
La fonction PostgreSQL regexp_replace()
a les paramètres suivants qui sont tous de type texte :
regexp_replace (string text, pattern text, replacement text [,flags text])
L’argument string
est la chaîne source sur laquelle la fonction de remplacement est exécutée. Le paramètre pattern
représente l’expression régulière pour laquelle il doit y avoir une correspondance avant qu’une sous-chaîne de l’argument chaîne puisse être remplacée.
Le paramètre replacement
représente le texte auquel nous modifions la sous-chaîne de l’argument de chaîne. Le paramètre flags
représente le texte qui peut être utilisé pour modifier le comportement de la fonction regexp_replace()
.
Dans l’exemple précédent, où nous devions changer toutes les occurrences majuscules et minuscules de a
en b
, nous pouvons utiliser la fonction regexp_replace()
, comme indiqué ici :
SELECT regexp_replace('agAdavA', '[a | A]+', 'b', 'g');
Le résultat est:
regexp_replace
----------------
bgbdbvb
Avec l’introduction de l’expression régulière, toutes les occurrences de a
majuscule et minuscule ont été remplacées au besoin. Le drapeau g
garantit que toutes les occurrences et pas seulement la première occurrence de a
sont remplacées.
Voici la documentation de PostgreSQL sur pattern matching.
Plus d’exemples de fonctions PostgreSQL replace()
Supposons que nous ayons un tableau avec une colonne nommée text
composée de mots simples, comme illustré ici :
id | text |
---|---|
1 | Red |
2 | Green |
3 | Blue |
4 | Red |
5 | Red |
Et nous voulons remplacer chaque occurrence du mot Red
par Yellow
. Nous pouvons utiliser la fonction replace()
, comme indiqué ici :
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
Le résultat est:
id | text
----+--------
1 | Yellow
2 | Green
3 | Blue
4 | Yellow
5 | Yellow
Disons que dans le même tableau, nous avons des mots avec des caractères spéciaux dans le champ text
, comme illustré ici :
id | text |
---|---|
6 | g-r-e-e-n |
7 | 1-23–4 |
8 | one-and-two |
9 | —n—2— |
10 | —– |
Et nous voulons remplacer toutes les occurrences du trait d’union (-
) par un trait de soulignement (_
). La fonction replace()
peut y parvenir, comme indiqué ici :
UPDATE demo SET text = replace(text, '-', '_');
Le résultat est:
id | text
----+-------------
6 | g_r_e_e_n
7 | 1_23__4
8 | one_and_two
9 | ___n___2___
10 | _____
Si nous insérons plus d’enregistrements dans la table de sorte que le champ text
contienne des phrases au lieu d’un seul mot, comme illustré ici :
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 |
Et nous voulons remplacer le mot red
par yellow
. Ceci peut être réalisé en utilisant la fonction replace()
, comme indiqué ici :
UPDATE demo SET text = replace(text, 'red', 'yellow');
Le résultat est:
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
Pour suivre, voici les commandes à exécuter :
--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;
Dans ce didacticiel, nous avons expliqué comment remplacer des chaînes à l’aide des fonctions PostgreSQL replace()
et regexp_replace
et comment la fonction replace()
peut être utilisée pour mettre à jour des chaînes dans une table.