Criar função no PostgreSQL GROUP_CONCAT equivalente ao GROUP_CONCAT MySQL

MySQL, PostgreSQL Comentar >> Marcelo Korjenioski

Hoje estava pre­ci­sando con­ca­te­nar dados de um campo e des­co­bri que no Post­greSQL não existe uma fun­ção equi­va­lente ao group_concat do MySQL.

Exem­plo do MySQL

select GROUP_CONCAT(nome ORDER BY nome DESC SEPARATOR ',') as nomes from usuarios

Então pro­cu­rando na web encon­trei esta função.

MS SQL to Post­gre SQL


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 exe­cu­tar a fun­ção basta usar.

select group_concat(distinct nome) as nomes from usuarios

Caso tenha alguma duvida ou suges­tão deixe um comen­tá­rio que terei pra­zer em aju­dar.
Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

É isso pes­soal uma ótima semana e até o próximo post.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn



  • http://www.dbrunas.com.ar/2009/09/17/tip-criar-funcao-no-postgresql-group_concat-equivalente-ao-group_concat-mysql/ TIP: Criar fun­ção no Post­greSQL GROUP_CONCAT equi­va­lente ao GROUP_CONCAT MySQL — DbRunas
  • http://www.dnrcriartes.com.br danni

    oi mar­celo naum con­se­gui ins­tala o live­zilla em me meu site deu um erro na hora de criar o bd vc pode­ria me ajuda com isso

  • http://www.phaneronsoft.com Mar­celo Korjenioski

    Qual foi a men­sa­gem de erro Danni? O basico caso não tenha feito e veri­fi­car se seu usu­a­rio no Banco de Dados pode criar uma nova Data Base.

blog comments powered by Disqus
Designed by NattyWP Wordpress Themes.
Images by desEXign.