Обсуждение: Concat field result in select query
<div dir="ltr">Hi all,<br /><br />I was wondering if there is a way to concatenate the results of a field in a select toreturn it as a single string.<br /><br />Example :<br /><br />my_field<br />--------------<br />1<br />2<br />3<br /><br/>select concat_something(my_field) from my_table group by something;<br /> the result expected would be someting likethat : 1/2/3 (with a separator it would be really nice)<br /><br />I hope that I am not asking for too much ;)<br /><br/>Thanks to all<br /></div>
any explanations ?
On Fri, Aug 22, 2008 at 6:07 PM, Julien Cigar <jcigar@ulb.ac.be> wrote:
array_accum ?--
On Fri, 2008-08-22 at 15:40 +0200, Nacef LABIDI wrote:
> Hi all,
>
> I was wondering if there is a way to concatenate the results of a
> field in a select to return it as a single string.
>
> Example :
>
> my_field
> --------------
> 1
> 2
> 3
>
> select concat_something(my_field) from my_table group by something;
> the result expected would be someting like that : 1/2/3 (with a
> separator it would be really nice)
>
> I hope that I am not asking for too much ;)
>
> Thanks to all
>
Julien Cigar
Belgian Biodiversity Platform
http://www.biodiversity.be
Université Libre de Bruxelles (ULB)
Campus de la Plaine CP 257
Bâtiment NO, Bureau 4 N4 115C (Niveau 4)
Boulevard du Triomphe, entrée ULB 2
B-1050 Bruxelles
Mail: jcigar@ulb.ac.be
@biobel: http://biobel.biodiversity.be/person/show/471
Tel : 02 650 57 52
array_accum ? On Fri, 2008-08-22 at 15:40 +0200, Nacef LABIDI wrote: > Hi all, > > I was wondering if there is a way to concatenate the results of a > field in a select to return it as a single string. > > Example : > > my_field > -------------- > 1 > 2 > 3 > > select concat_something(my_field) from my_table group by something; > the result expected would be someting like that : 1/2/3 (with a > separator it would be really nice) > > I hope that I am not asking for too much ;) > > Thanks to all > -- Julien Cigar Belgian Biodiversity Platform http://www.biodiversity.be Université Libre de Bruxelles (ULB) Campus de la Plaine CP 257 Bâtiment NO, Bureau 4 N4 115C (Niveau 4) Boulevard du Triomphe, entrée ULB 2 B-1050 Bruxelles Mail: jcigar@ulb.ac.be @biobel: http://biobel.biodiversity.be/person/show/471 Tel : 02 650 57 52
Nacef LABIDI a écrit : > Hi all, > > I was wondering if there is a way to concatenate the results of a field > in a select to return it as a single string. > > Example : > > my_field > -------------- > 1 > 2 > 3 > > select concat_something(my_field) from my_table group by something; > the result expected would be someting like that : 1/2/3 (with a > separator it would be really nice) > > I hope that I am not asking for too much ;) > Something like: SELECT array_to_string(array(select myfield from mytable), ',')); For example: sherkin=# select * from t1;c1 | c2 ----+---- 1 | 2 | 3 2 | 4 2 | 5 (4 lignes) sherkin=# SELECT array_to_string(array(select c1 from t1), ',');array_to_string -----------------1,2,2,2 (1 ligne) -- Guillaume.http://www.postgresqlfr.orghttp://dalibo.com
Thank you, this is all what I need
On Fri, Aug 22, 2008 at 4:10 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote:
Nacef LABIDI a écrit :Something like:> Hi all,
>
> I was wondering if there is a way to concatenate the results of a field
> in a select to return it as a single string.
>
> Example :
>
> my_field
> --------------
> 1
> 2
> 3
>
> select concat_something(my_field) from my_table group by something;
> the result expected would be someting like that : 1/2/3 (with a
> separator it would be really nice)
>
> I hope that I am not asking for too much ;)
>
SELECT array_to_string(array(select myfield from mytable), ','));
For example:
sherkin=# select * from t1;
c1 | c2
----+----
1 |
2 | 3
2 | 4
2 | 5
(4 lignes)
sherkin=# SELECT array_to_string(array(select c1 from t1), ',');
array_to_string
-----------------
1,2,2,2
(1 ligne)
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
Also, the array_accum aggregate isn't present by default, you need to
create it with :
CREATE AGGREGATE array_accum (anyelement)
( sfunc = array_append, stype = anyarray, initcond = '{}'
);
On Fri, 2008-08-22 at 18:24 +0200, Julien Cigar wrote:
> of course: http://rafb.net/p/EOaYfO59.html
>
> Julien
>
> On Fri, 2008-08-22 at 15:58 +0200, Nacef LABIDI wrote:
> > any explanations ?
> >
> > On Fri, Aug 22, 2008 at 6:07 PM, Julien Cigar <jcigar@ulb.ac.be>
> > wrote:
> > array_accum ?
> >
> >
> > On Fri, 2008-08-22 at 15:40 +0200, Nacef LABIDI wrote:
> > > Hi all,
> > >
> > > I was wondering if there is a way to concatenate the results
> > of a
> > > field in a select to return it as a single string.
> > >
> > > Example :
> > >
> > > my_field
> > > --------------
> > > 1
> > > 2
> > > 3
> > >
> > > select concat_something(my_field) from my_table group by
> > something;
> > > the result expected would be someting like that : 1/2/3
> > (with a
> > > separator it would be really nice)
> > >
> > > I hope that I am not asking for too much ;)
> > >
> > > Thanks to all
> > >
> >
> > --
> > Julien Cigar
> > Belgian Biodiversity Platform
> > http://www.biodiversity.be
> > Université Libre de Bruxelles (ULB)
> > Campus de la Plaine CP 257
> > Bâtiment NO, Bureau 4 N4 115C (Niveau 4)
> > Boulevard du Triomphe, entrée ULB 2
> > B-1050 Bruxelles
> > Mail: jcigar@ulb.ac.be
> > @biobel: http://biobel.biodiversity.be/person/show/471
> > Tel : 02 650 57 52
> >
> >
> >
--
Julien Cigar
Belgian Biodiversity Platform
http://www.biodiversity.be
Université Libre de Bruxelles (ULB)
Campus de la Plaine CP 257
Bâtiment NO, Bureau 4 N4 115C (Niveau 4)
Boulevard du Triomphe, entrée ULB 2
B-1050 Bruxelles
Mail: jcigar@ulb.ac.be
@biobel: http://biobel.biodiversity.be/person/show/471
Tel : 02 650 57 52
of course: http://rafb.net/p/EOaYfO59.html Julien On Fri, 2008-08-22 at 15:58 +0200, Nacef LABIDI wrote: > any explanations ? > > On Fri, Aug 22, 2008 at 6:07 PM, Julien Cigar <jcigar@ulb.ac.be> > wrote: > array_accum ? > > > On Fri, 2008-08-22 at 15:40 +0200, Nacef LABIDI wrote: > > Hi all, > > > > I was wondering if there is a way to concatenate the results > of a > > field in a select to return it as a single string. > > > > Example : > > > > my_field > > -------------- > > 1 > > 2 > > 3 > > > > select concat_something(my_field) from my_table group by > something; > > the result expected would be someting like that : 1/2/3 > (with a > > separator it would be really nice) > > > > I hope that I am not asking for too much ;) > > > > Thanks to all > > > > -- > Julien Cigar > Belgian Biodiversity Platform > http://www.biodiversity.be > Université Libre de Bruxelles (ULB) > Campus de la Plaine CP 257 > Bâtiment NO, Bureau 4 N4 115C (Niveau 4) > Boulevard du Triomphe, entrée ULB 2 > B-1050 Bruxelles > Mail: jcigar@ulb.ac.be > @biobel: http://biobel.biodiversity.be/person/show/471 > Tel : 02 650 57 52 > > > -- Julien Cigar Belgian Biodiversity Platform http://www.biodiversity.be Université Libre de Bruxelles (ULB) Campus de la Plaine CP 257 Bâtiment NO, Bureau 4 N4 115C (Niveau 4) Boulevard du Triomphe, entrée ULB 2 B-1050 Bruxelles Mail: jcigar@ulb.ac.be @biobel: http://biobel.biodiversity.be/person/show/471 Tel : 02 650 57 52
> Hi all, > > I was wondering if there is a way to concatenate the > results of a field in a > select to return it as a single string. > > Example : > > my_field > -------------- > 1 > 2 > 3 > > select concat_something(my_field) from my_table group by > something; > the result expected would be someting like that : 1/2/3 > (with a separator it > would be really nice) > > I hope that I am not asking for too much ;) > > Thanks to all you can use aggregate function, check for previous threads for this solution http://www.postgresql.org/docs/8.3/static/sql-createaggregate.html