On Wed, Apr 01, 2009 at 10:23:18AM -0700, David E. Wheeler wrote:
> On Apr 1, 2009, at 10:05 AM, justin wrote:
> >string_to_array('',',')::INT[] works as proposed
> >
> >But
> >string_to_array(',,,', ',' )::INT[] Fails
> >or
> >string_to_array('1,2,,4', ',' )::INT[] Fails .
> >
> >
> >I'm trying to understand the difference between a empty string to a
> >string with many blank entries between the delimiter.
> >Consider ',,,,,,' = '' once the delimiter is removed . Yet
> >Seven zero length entries were passed. How is that going to be
> >handled????
>
> Right, it's making a special case of '', which does seem rather
> inconsistent to me.
Yes it is; but it's a useful special case because it allows:
string_to_array(array_to_string(col,','),',')
to do the right thing whether it's got zero or more elements in. With
the current implementation you get a NULL back in the case of zero
elements and the expected array back the rest of the time.
To me, it doesn't really matter whether:
string_to_array(',', ',' )::INT[]
fails or not; because array_to_string will never generate a string that
looks like this.
--
Sam http://samason.me.uk/