Обсуждение: get the array content whis the select clause

Поиск
Список
Период
Сортировка

get the array content whis the select clause

От
De Leeuw Guy
Дата:
Hello all

It is possible to return the content of an int array [] with a select
clause ?

Thanks in advance for your respons

Guy

Re: get the array content whis the select clause

От
Kristo Kaiv
Дата:
i guess this what you meant:
(not a nice solution though) writing a function that returns the set
would be a better idea

create table testintarr (iarr int[]);
insert into testintarr values ('5,6,7,8');

test=# select iarr[idx] from (select iarr, generate_series(array_lower
(iarr,1), array_upper(iarr,1)) as idx from testintarr) asdf;
iarr
------
     5
     6
     7
     8
(4 rows)

BR,
Kristo

On 04.06.2007, at 23:47, De Leeuw Guy wrote:

> Hello all
>
> It is possible to return the content of an int array [] with a select
> clause ?
>
> Thanks in advance for your respons
>
> Guy
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that
> your
>        message can get through to the mailing list cleanly


Re: get the array content whis the select clause

От
De Leeuw Guy
Дата:
Great !!!

Many thanks Kristo, it's just what I need

Guy

Kristo Kaiv a écrit :
> i guess this what you meant:
> (not a nice solution though) writing a function that returns the set
> would be a better idea
>
> create table testintarr (iarr int[]);
> insert into testintarr values ('5,6,7,8');
>
> test=# select iarr[idx] from (select iarr,
> generate_series(array_lower(iarr,1), array_upper(iarr,1)) as idx from
> testintarr) asdf;
> iarr
> ------
>     5
>     6
>     7
>     8
> (4 rows)
>
> BR,
> Kristo
>
> On 04.06.2007, at 23:47, De Leeuw Guy wrote:
>
>> Hello all
>>
>> It is possible to return the content of an int array [] with a select
>> clause ?
>>
>> Thanks in advance for your respons
>>
>> Guy
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 1: if posting/reading through Usenet, please send an appropriate
>>        subscribe-nomail command to majordomo@postgresql.org so that your
>>        message can get through to the mailing list cleanly
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq

Re: get the array content whis the select clause

От
Erwin Brandstetter
Дата:
On Jun 5, 12:13 pm, kristo.k...@skype.net (Kristo Kaiv) wrote:
> i guess this what you meant:
> (not a nice solution though) writing a function that returns the set
> would be a better idea
>
> create table testintarr (iarr int[]);
> insert into testintarr values ('5,6,7,8');
>
> test=# select iarr[idx] from (select iarr, generate_series(array_lower
> (iarr,1), array_upper(iarr,1)) as idx from testintarr) asdf;
> iarr


Function would look like this:

CREATE OR REPLACE FUNCTION f_intarr_to_set(integer[])
  RETURNS SETOF integer AS
$BODY$
BEGIN
FOR i IN array_lower($1,1) .. array_upper($1,1) LOOP
   RETURN NEXT $1[i];
END LOOP;
END;
$BODY$
  LANGUAGE 'plpgsql';

SELECT * FROM f_intarr_to_set('{1,3,5,7,9,321}');

But I think I like Kristo�s query even better. :)


Regards
Erwin