On Sun, Dec 23, 2007 at 10:27:09PM +0100, Pavel Stehule wrote:
> On 23/12/2007, Louis-David Mitterrand
> <vindex+lists-pgsql-sql@apartia.org> wrote:
> > Hi,
> >
> > is there a way to return a Pg array as a list of single-column row
> > values?
> >
> > I am trying to circumvent DBI's lack of support for native database
> > arrays and return the list of values from an ENUM as a perl array.
> >
> > Thanks,
> >
>
> you can solve this problem with conversion to string with const separator
>
> Like:
>
> postgres=# select array_to_string(array[1,2,3,4],'|');
> array_to_string
> -----------------
> 1|2|3|4
> (1 row)
>
> [pavel@localhost ~]$ perl
> @a = split(/\|/, "1|2|3");
> print $a[1];
Yes I thought about it, but would rather have Pg do the array splitting.
For instance if the separator occurs in an array element there is no
built-in escaping:
% select array_to_string(array['ee','dd','rr','f|f'],'|');array_to_string ----------------- ee|dd|rr|f|f
... and then perl would have it all wrong.