Re: Nulls get converted to 0 problem
От | kdebisschop@alert.infoplease.com |
---|---|
Тема | Re: Nulls get converted to 0 problem |
Дата | |
Msg-id | 1054899579.1182.30.camel@miles.debisschop.net обсуждение исходный текст |
Ответ на | Re: Nulls get converted to 0 problem (Jon Earle <je_pgsql@kronos.honk.org>) |
Ответы |
Re: Nulls get converted to 0 problem
Re: Nulls get converted to 0 problem Re: Nulls get converted to 0 problem |
Список | pgsql-general |
On Thu, 2003-06-05 at 09:39, Jon Earle wrote: > On Wed, 4 Jun 2003 terry@ashtonwoodshomes.com wrote: > > > Oracle *incorrectly* interprets blank (empty) strings as NULL. They are NOT > > the same. A string of zero characters is a string nonetheless. A NULL is > > "the absence of value", which equals nothing (theoretically not even another > > NULL). > > If you're testing a value, you're testing to see if there's something in > there or not - what difference does it make if the variable contains 0, "" > or NULL? > > Why not adhere to the practices inherent (and thus anticipated by > developers) in other languages (C comes to mind) where 0, NULL and "" are > equivalent? Perhaps because the SQL Spec says they are different? For that matter, a zero length string in C is not the same as NULL. Believing otherwise may be convenient, but leads to segfaults i.e., this code will cause a segfault main(...) { char *str; if (str == NULL) printf ("This test is safe\n"); if (str == "") printf ("This comparison above can segfault on some systems\n"); printf ("printing a NULL string like %s can also segfault\n", str); } I believe in C the following is true as well: main() { char *str=""; if (str) printf ("An empty string evaluates as true"); } -- Karl DeBisschop <kdebisschop@alert.infoplease.com>
В списке pgsql-general по дате отправления: