Thread: Checking empty array

Checking empty array

From
Alexis Beuraud
Date:
Dear all,

What is the correct way to check whether an array is empty?
I have an array which I initialize with '{}' and then do som array_append
under some circonstances. I would like to know whether the array is empty at
the end of the function. I have not found the answer in the help page nor on
the web. I use the keyword isnull but that does not seem to work in all the
cases.
I would appreciate if someone could put this piece of information into the
Postgres documentation.

Here is what I do, in pseudo-code:

myarray varchar[];
myarray :=   '{}';

FOR ___ LOOP
 IF (___) THEN
    myarray := array_append(myarray, somestuff);
 END IF;
END LOOP;

-- Is my array empty now?
IF (myarray isnull) THEN
__
END IF;

Regards,
Alexis Beuraud


Re: Checking empty array

From
Richard Huxton
Date:
Alexis Beuraud wrote:
> Dear all,
>
> What is the correct way to check whether an array is empty?

> -- Is my array empty now?
> IF (myarray isnull) THEN

An empty array isn't null (unknown), it's empty.

Try enquiring about it's size:
SELECT array_dims('{}'::integer[]) is null;
  ?column?
----------
  t

You could use array_lower/upper instead too.

--
   Richard Huxton
   Archonet Ltd

Re: Checking empty array

From
"Pavel Stehule"
Date:
2007/10/30, Alexis Beuraud <alexis@siatel.com>:
> Dear all,
>
> What is the correct way to check whether an array is empty?
> I have an array which I initialize with '{}' and then do som array_append
> under some circonstances. I would like to know whether the array is empty at
> the end of the function. I have not found the answer in the help page nor on
> the web. I use the keyword isnull but that does not seem to work in all the
> cases.
> I would appreciate if someone could put this piece of information into the
> Postgres documentation.
>
> Here is what I do, in pseudo-code:
>
> myarray varchar[];
> myarray :=   '{}';
>
> FOR ___ LOOP
>  IF (___) THEN
>     myarray := array_append(myarray, somestuff);
>  END IF;
> END LOOP;
>
> -- Is my array empty now?
> IF (myarray isnull) THEN
> __
> END IF;
>

IF (array_upper(myarray,1) is null) THEN
   ....
END IF;

Regards
Pavel Stehule

> Regards,
> Alexis Beuraud
>
>
> ---------------------------(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: Checking empty array

From
"Albe Laurenz"
Date:
Alexis Beuraud wrote:
> What is the correct way to check whether an array is empty?
>
> Here is what I do, in pseudo-code:
>
> -- Is my array empty now?
> IF (myarray isnull) THEN

Try this:

IF array_lower(myarray, 1) IS NULL THEN ... END IF

Yours,
Laurenz Albe