Re: Array intersection

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: Array intersection
Дата
Msg-id 162867790710171256m29f5151lccf0301989a8a90a@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Array intersection  (David Fetter <david@fetter.org>)
Список pgsql-general
> > <snip>
> >
> > > CREATE OR REPLACE FUNCTION array_intersect(ANYARRAY, ANYARRAY)
> > > RETURNS ANYARRAY
> > > LANGUAGE SQL
> > > AS $$
> > > SELECT ARRAY(
> > >     SELECT $1[i] AS "the_intersection"
> > >     FROM generate_series(
> > >         array_lower($1,1),
> > >         array_upper($1,1)
> > >     ) AS i
> > >     INTERSECT
> > >     SELECT $2[j] AS "the_intersection"
> > >     FROM generate_series(
> > >         array_lower($2,1),
> > >         array_upper($2,1)
> > >     ) AS j
> > > );
> > > $$;
> >

nice :)

Maybe we can add function "generate_iterator"

CREATE OR REPLACE FUNCTION generate_iterator(ANYARRAY)
RETURNS SETOF integer AS
$$
   SELECT i
      FROM generate_series(array_lower($1, 1), array_upper($1,1)) AS i
$$ LANGUAGE SQL;

then
CREATE OR REPLACE FUNCTION array_intersect(ANYARRAY, ANYARRAY)
RETURNS ANYARRAY
LANGUAGE SQL AS
$$
  SELECT ARRAY(
                           SELECT $1[i]
                               FROM genarate_iterator($1) i
                           INTERSECT
                           SELECT $2[j]
                               FROM generate_iterator($2) j
                           )
$$ ;

Regars
Pavel

В списке pgsql-general по дате отправления:

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: Poor Plan selected w/ not provided a date/time but selecting date/time from a table
Следующее
От: Lothar Behrens
Дата:
Сообщение: conditional alter table add ?