Re: array_to_string - Mailing list pgsql-sql

From Richard Huxton
Subject Re: array_to_string
Date
Msg-id 46093BFD.8060007@archonet.com
Whole thread Raw
In response to Re: array_to_string  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
Tom Lane wrote:
> Richard Huxton <dev@archonet.com> writes:
>> Tom Lane wrote:
>>> "Sabin Coanda" <sabin.coanda@deuromedia.ro> writes:
>>>> I used the function array_to_string, and I found it ignores NULL values, 
>>>> e.g. array_to_string( 'ARRAY[1,NULL,3]', ',' ) returns '1,3'.
>>> Do you have a better idea?
> 
>> If you're being strict it should presumably return NULL for the whole 
>> string. Or you'd need a "coalesce-to-this" parameter.
> 
> If the whole array is NULL it would return NULL, but that seems
> unhelpful for a single element being NULL ...

It's the least surprising choice though. You'd expect array_to_string() 
to be a loop doing something like:  output = output || connector || arr[i]
Of course this will produce NULL if any of the inputs are NULL. Now that 
might be unhelpful, but that's NULL for you.

All you're doing is (presumably) adding a hidden test to the loop where 
Sabin seemed to expect COALESCE(arr[i],<something>). I'm not sure either 
is better across the board.

The problem comes with what <something> should be. You're either looking 
at a third parameter or perhaps more cleanly you need a 
coalesce_array(ARRAY,VAL) function which produces an output array where 
all the null elemts are replaced by VAL.

--   Richard Huxton  Archonet Ltd


pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: array_to_string
Next
From: Peter Eisentraut
Date:
Subject: Re: Foreign Unique Constraint