Sep 17
Criar função no PostgreSQL GROUP_CONCAT equivalente ao GROUP_CONCAT MySQL
MySQL, PostgreSQL 1 Comment » Marcelo KorjenioskiHoje estava precisando concatenar dados de um campo e descobri que no PostgreSQL não existe uma função equivalente ao group_concat do MySQL.
Exemplo do MySQL
select GROUP_CONCAT(nome ORDER BY nome DESC SEPARATOR ',') as nomes from usuarios
Então procurando na web encontrei esta função.
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
);
Para executar a função basta usar.
select group_concat(distinct nome) as nomes from usuarios
Caso tenha alguma duvida ou sugestão deixe um comentário que terei prazer em ajudar.
Comentários são bem vindos assim posso melhorar a qualidade dos tutoriais aqui apresentados.
É isso pessoal uma ótima semana e até o próximo post.

Comentários Recentes