On Thu, Sep 22, 2005 at 14:16:48 -0600,
Guy Fraser <guy@incentre.net> wrote:
> On Thu, 2005-22-09 at 12:43 -0400, Greg Stark wrote:
> > Guy Fraser <guy@incentre.net> writes:
> >
> > > So to answer his question he would likely want :
> > >
> > > SELECT
> > > array_upper(item,1) - array_upper(item,0) + 1 as elements
> > > FROM
> > > arraytest ;
> >
> > Note that this doesn't work for empty arrays.
> > It will return NULL instead of 0.
> Your response was not at all helpfull, I would like to
> encourage you to expand on what I put off the top of my
> head.
>
> I have not used array_upper() before, and the question was
> how to return the total number of elements, not how to
> handle NULL and empty arrays.
I think his point was that your example was going to give the wrong answer
for empty arrays, which is relevant to your question. The normal way around
that is to use the COALESCE function.