Thread: Join field values
Hello!
I have such field in my table:
field1
-------
1
2
3
4
5
I want to get such result from select:
'1,2,3,4,5' - join all values in field1 with ','
// result must be varchar.
Help to write SELECT-query for this task.
I have such field in my table:
field1
-------
1
2
3
4
5
I want to get such result from select:
'1,2,3,4,5' - join all values in field1 with ','
// result must be varchar.
Help to write SELECT-query for this task.
On Tue, 2007-06-05 at 19:33 +0300, veejar wrote: > Hello! > > I have such field in my table: > > field1 > ------- > 1 > 2 > 3 > 4 > 5 > > > I want to get such result from select: > '1,2,3,4,5' - join all values in field1 with ',' > // result must be varchar. > Look into writing a simple function: http://www.postgresql.org/docs/current/static/plpgsql.html Also, consider that you should have an ORDER BY somewhere, to make sure the values get joined in the order that you expect. Regards, Jeff Davis
On þri, 2007-06-05 at 19:33 +0300, veejar wrote: > Hello! > > I have such field in my table: > > field1 > ------- > 1 > 2 > 3 > 4 > 5 > > > I want to get such result from select: > '1,2,3,4,5' - join all values in field1 with ',' > // result must be varchar. > > Help to write SELECT-query for this task. create an aggregate function and use that in your select. http://www.postgresql.org/docs/8.2/static/sql-createaggregate.html google reminded me of the mysql compatibility project, whose implementation for group_concat() can be found here: http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/mysqlcompat/mysqlcompat/aggregate.sql?rev=1.2&content-type=text/x-cvsweb-markup gnari
On Jun 5, 7:39 pm, g...@hive.is (Ragnar) wrote: > > create an aggregate function and use that in your select.http://www.postgresql.org/docs/8.2/static/sql-createaggregate.html Of course you could do that. And it would look like that: CREATE OR REPLACE FUNCTION f_concat_comma(text, text) RETURNS text AS $BODY$ BEGIN RETURN $1 || ', ' || $2; END; $BODY$ LANGUAGE 'plpgsql' STABLE IMMUTABLE; CREATE AGGREGATE concat_comma( BASETYPE=text, SFUNC=f_concat_comma, STYPE=text ); SELECT concat_comma(field1) FROM mytbl; --Or, if want the values ordered: SELECT concat_comma(field1) FROM (SELECT field1 FROM mytbl ORDER by field1) x; And that's what I did - before I found out about this simpler way: SELECT array_to_string(ARRAY(SELECT field1 FROM mytbl ORDER by field1), ', '); More info: http://www.postgresql.org/docs/8.2/static/functions-array.html Regards Erwin
On Jun 5, 10:14 pm, Erwin Brandstetter <brsaw...@gmail.com> wrote: > CREATE OR REPLACE FUNCTION f_concat_comma(text, text) (...) > LANGUAGE 'plpgsql' STABLE IMMUTABLE; There's a typo. Should be: LANGUAGE 'plpgsql' IMMUTABLE; Regards Erwin
veejar <veejar.net@gmail.com> writes: > Hello! > > I have such field in my table: > > field1 > ------- > 1 > 2 > 3 > 4 > 5 > > > I want to get such result from select: > '1,2,3,4,5' - join all values in field1 with ',' > // result must be varchar. No sense in writing your own func for this; the feature is already provided. select array_to_string(array(select * from generate_series(1,5)), ','); array_to_string ----------------- 1,2,3,4,5 (1 row) > Help to write SELECT-query for this task. -- ------------------------------------------------------------------------------- Jerry Sievers 732 365-2844 (work) Production Database Administrator 305 321-1144 (mobil WWW E-Commerce Consultant
On Jun 7, 9:49 pm, j...@jerrysievers.com (Jerry Sievers) wrote: > > No sense in writing your own func for this; the feature is already > provided. > > select array_to_string(array(select * from generate_series(1,5)), ','); Tell me about redundant efforts! :) Regards Erwin