Faire un don
Vous êtes ici : Accueil Zaclys Astuces / Les rubriques / Informatique / Système d'exploitation / Linux / Autre

Voir un article

Postgresql : concat() la fonction de string aggrégation

Voici comment créer la fonction d'aggréation concat sur les anciennes versions de postgresql (testé ici sur postgres 8.4)

Connectez vous à la base cible avec psql.


Ensuite créez la fonction de base sconcat :

CREATE FUNCTION sconcat(text, text) RETURNS text
    LANGUAGE sql
    AS $_$
   select CASE WHEN $1 is null and $2 is null THEN '' ELSE
      ( select CASE WHEN $1 is null THEN $2  ELSE
         (  select CASE WHEN  $2 is null THEN $1 ELSE $1 || $2  END )
         END )
   END;
--    select $1 || $2 ;
$_$;



Et enfin la fonction d'aggrégation utilisant la fonction précédente :

CREATE AGGREGATE concat(text) (
    SFUNC = sconcat,
    STYPE = text,
    INITCOND = ''
);



Ce qui permet ensuite  :

select repertoire.id, concat(zones.pays||',') from repertoire left join zones on (zones.id = any(repertoire.pays_zones_id)) group by 1 ;

id   | concat
-----+-------------------------------
 195 | France,International,
 129 | Hongrie,Roumanie,Tunisie,



3 352 clics - Créé le 16/10/2012 par Tito - Modifié le 25/10/2012



Réagissez, commentez, discutez ...

InfoSoyez le premier à réagir !


(sert uniquement à vous signaler les réactions)




Partager ?

diaspora  G+  facebook  twitter  Digg  Yahoo  Delicious  Technorati  myspace


Voir d'autres articles en rapport avec celui-ci ?



Stats des clics sur cet article : cliquez ici »



Vous voulez contribuer et publier un article dans cette rubrique ?

InfoMerci de vous identifier ou de vous créer un compte si ce n'est pas déjà fait.


icone user Me connecter :

InfoMerci de saisir vos identifiants.




Me reconnecter automatiquement à chaque visite sur ce navigateur :
               





retour






Plan du site | Aide | Mentions légales | Travaux et incidents | Budget | Faire un don | Mousse | Z pub | Logo et charte

© Association la mère Zaclys 1998-2018  - Zaclys v2.5

Suivez nous sur Diaspora, Mastodon, Google+, FaceBook ou Twitter