Re: Nulls get converted to 0 problem - Mailing list pgsql-general

From Jonathan Bartlett
Subject Re: Nulls get converted to 0 problem
Date
Msg-id Pine.GSU.4.44.0306060815280.22643-100000@eskimo.com
Whole thread Raw
In response to Re: Nulls get converted to 0 problem  (kdebisschop@alert.infoplease.com)
List pgsql-general
I think the basic idea is that NULL can be used for purposes outside the
normal range of numbers.

For example, I can use NULL to indicate that I don't know what the value
is, as apposed to the value actually being 0.

This would be better accomplished by fuller support for value domains, but
no database (or few unknown ones) implement that, and NULL is the next
best thing.

Jon

On 6 Jun 2003 kdebisschop@alert.infoplease.com wrote:

> 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>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html
>


pgsql-general by date:

Previous
From: Rory Campbell-Lange
Date:
Subject: Return Record
Next
From: "David Busby"
Date:
Subject: Create Foriegn Key