Home » Programmation Web » Langages Web » Ajout de fonction à PostgreSQL : group_concat

Ajout de fonction à PostgreSQL : group_concat

Dernièrement, j’ai eu l’occasion de travailler sur PostgreSQL (J’ai plus l’habitude de travailler sur MySQL).

Dans un de mes développements, je devais utiliser une fonction permettant le regroupement de différentes valeurs en une chaîne de caractère.
J’avais déjà utilisé group_concat dans MySQL, et je n’avais utiliser l’équivalent dans PostgreSQL.

Avec un peu de recherche, j’ai vu qu’il était possible de créer des fonctions spécifiques, et de les ajouter dans PostgreSQL. C’est ce que j’ai fait.

Pour cela, c’est très simple : il faut d’abord aller sur votre outil qui gère vos BDD (pgAdmin, …).
Puis, il faut ajouter les lignes suivantes :

create aggregate array_accum (
	sfunc = array_append,
	basetype = anyelement,
	stype = anyarray,
	initcond = '{}'
);

CREATE OR REPLACE FUNCTION _group_concat(text, text)
RETURNS text AS $$
SELECT CASE
WHEN $2 IS NULL THEN $1
WHEN $1 IS NULL THEN $2
ELSE $1 operator(pg_catalog.||) ',' operator(pg_catalog.||) $2
END
$$ IMMUTABLE LANGUAGE SQL;

CREATE AGGREGATE group_concat (
	BASETYPE = text,
	SFUNC = _group_concat,
	STYPE = text
);

A partir de maintenant, la fonction group_concat est utilisable dans PostgreSQL

Posté dans Langages Web, Programmation Web

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.