Re: Array Contained By Array Question - Mailing list pgsql-novice

From Merlin Moncure
Subject Re: Array Contained By Array Question
Date
Msg-id BANLkTim=R64m-hjhG_1iHmNsQ30zc+iN9Q@mail.gmail.com
Whole thread Raw
In response to Array Contained By Array Question  ("Arthur M. Kang" <arthurmkang@gmail.com>)
Responses Re: Array Contained By Array Question  ("Arthur M. Kang" <arthurmkang@gmail.com>)
List pgsql-novice
On Fri, Jun 10, 2011 at 11:00 AM, Arthur M. Kang <arthurmkang@gmail.com> wrote:
> How can I search a multidimensional array for an EXACT "subarray" match?
>
> The following produces true when I want it to produce false.  Obviously, I
> would only want it to produce true for ARRAY[1,2], ARRAY[3,4], or
> ARRAY[5,6].
>
> SELECT ARRAY[ARRAY[1,2], ARRAY[3,4], ARRAY[5,6]] @> ARRAY[ARRAY[1,6]];
>
> Any help is greatly appreciated.

create or replace function slice_in_array(needle anyarray, haystack
anyarray) returns bool as
$$
  select $1 in (select $2[v:v] from generate_series(1, array_upper($2, 1)) v);
$$ language sql immutable;

select slice_in_array(array[array[1,2]], ARRAY[ARRAY[1,2], ARRAY[3,4],
ARRAY[5,6]]);

-- or --

create or replace function slice_in_array(needle anyarray, haystack
anyarray) returns bool as
$$
  select array[$1] in (select $2[v:v] from generate_series(1,
array_upper($2, 1)) v);
$$ language sql immutable;

select slice_in_array(ARRAY[1,2], ARRAY[ARRAY[1,2], ARRAY[3,4], ARRAY[5,6]]);

(not really sure what the deal is with the operator)

merlin

pgsql-novice by date:

Previous
From: "Arthur M. Kang"
Date:
Subject: Array Contained By Array Question
Next
From: "Arthur M. Kang"
Date:
Subject: Re: Array Contained By Array Question