Greg Stark wrote:
On Tue, Mar 31, 2009 at 5:48 PM, justin <justin@emproshunts.com> wrote:
  
But consider  this fails also

select string_to_array('1, , 3', ',' )::int[] => ERROR:  invalid input
syntax for integer: " "

yet this works

select string_to_array('1, 2, 3',',')::int[]
    


Sure, and the analogous pair string_to_array(' ',',')::int[] and
string_to_array('1 ',',')::int[] behave similarly.

The point is that '' could represent no items or one empty string. We
get to pick which one and in any use case where the string was a list
of objects it's almost certainly intended to be an empty list. And
databases are almost always processing lists of things.

I think the only use case where you want it to be a singleton list of
an empty string is when you're doing string parsing such as building a
lexer or something like that, which is isn't a typical use for sql
code.
  

I disagree.   Casting a string to something else can be a very error prone to begin with.
Having  string_to_array() to deal with that possibility  is out of its scope IMHO.

Consider this.  I have intelligent part numbers  that need to be split apart to simplify searching  and do math with.

string_to_array(' F-2500-50 ', '-' ) ::int[]

Still fails with an error as expected.  what is the difference between ' '  and 'F' 

So before doing any thing a test needs to be done to verify the contents, so it can be casted to something else.