Postgresql – Modifier une chaine dans un champs (replace dans update)
novembre 23, 2015 1:51 Laissez vos commentairesBonjour à tous,
Voici une exemple de requête basique pour modifier une partie seulement des valeurs contenues dans un champs :
UPDATE matable SET champs1 = REPLACE(champs1, 'Hello', 'Bonjour')
Maintenant, imaginons que nous souhaitons modifier les chaînes de ce champs en fonction d’une liste de valeurs dynamiques contenues dans une table de correspondance.
Exemple :
Ma table de correspondance comprend 2 champs, ancien_nom et nouveau_nom.
Nous souhaitons modifier le champs1 de notre précédente table seulement si sa valeur correspond à une valeur du champs ancien_nom de notre table de correspondance. Dans ce cas, nous remplacerons la valeur ancien_nom par nouveau_nom.
DECLARE
r table_correspondance%ROWTYPE;
ancien_nom text;
nouveau_nom text;
BEGIN
SET search_path TO crm;
for r IN SELECT * from table_correspondance LOOP
ancien_nom := r.ancien_nom;
nouveau_nom := r.nouveau_nom;
UPDATE matable SET champs1 = REPLACE(champs1, ancien_nom, nouveau_nom);
end loop;
Tout simplement 😉
Classés dans :Postgresql
Cet article a été écrit par admin