Re: string_to_array with empty input
От | justin |
---|---|
Тема | Re: string_to_array with empty input |
Дата | |
Msg-id | 49D25673.20406@emproshunts.com обсуждение исходный текст |
Ответ на | Re: string_to_array with empty input (Greg Stark <stark@enterprisedb.com>) |
Ответы |
Re: string_to_array with empty input
|
Список | pgsql-general |
Greg Stark wrote: <blockquote cite="mid:4136ffa0903311006v15eb3a25xf3fa94a8ca089fd6@mail.gmail.com" type="cite"><pre wrap="">OnTue, Mar 31, 2009 at 5:48 PM, justin <a class="moz-txt-link-rfc2396E" href="mailto:justin@emproshunts.com"><justin@emproshunts.com></a>wrote: </pre><blockquote type="cite"><pre wrap="">Butconsider 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[] </pre></blockquote><pre wrap=""> 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. </pre></blockquote><br /> I disagree. Casting a string to something else can be a very error prone to begin with.<br /> Having string_to_array() to deal with that possibility is out of its scope IMHO.<br /><br /> Consider this. I have intelligent part numbers that need to be split apart to simplify searching and do math with. <br /><br />string_to_array(' F-2500-50 ', '-' ) ::int[]<br /><br /> Still fails with an error as expected. what is the differencebetween ' ' and 'F' <br /><br /> So before doing any thing a test needs to be done to verify the contents, soit can be casted to something else.<br />
В списке pgsql-general по дате отправления: