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 923 clics - Créé le 16/10/2012 par Tito - Modifié le 25/10/2012



Réagissez, commentez, discutez ...

Soyez le premier à réagir !



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 ?

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