Re: So what's null then if it's not nothing?

From: N. Shamsundar <shamsundar_at__at_uh.edu>
Date: Thu, 17 Nov 2005 10:27:55 -0600
Message-ID: <dlib39$bqm$1_at_masala.cc.uh.edu>


michael_at_preece.net wrote:
> I've been accustomed to thinking of things either having a value or
> not. If something has no value then, to me, its value is null. Its
> value is an empty string (whatever "it" is). Different to having a
> value of zero. Different to anything with a value. Now, as I read up on
> SQL, I find that null is supposed to mean "unknown". I can't easily
> accept that. Does SQL's definition of null (unknown) include the null
> I'm familiar with (no value)? That doesn't make sense. If we know
> something has no value then its not an unknown value is it? I can't
> imagine having to write code where the "if a=b then result=true else
> result=false" construct won't work - according to what I'm reading, if
> either a or b is null then I should be setting result to unknown
> instead. Just can't get my head 'round that. Shouldn't things be a lot
> simpler? If something has an unknown value then at least we know
> whether it's null (as in an empty string) or not. To me, "unknown" can
> be compared with an empty string to see if it's null or not. Sorry -
> head is spinning.
>
> Mike.
>
Try this: every logical expression has three possible values, not two as in languages such as C, Pascal, Fortran, etc. They are, as you seem to have recognized, "TRUE", "FALSE" and "UNKNOWN" (named "NULL" in SQL). If you keep this in mind and refrain from using other notions such as the NULL in C (a pointer value that you may not dereference, etc.), you'll grasp SQL's use of NULL as being different from what you may be used to.

Precisely because C, PL/I, etc. do not have this notion of NULL, it is necessary in those languages to use "indicator variables" if embedded SQL is used.

There has been a long and unsettled debate about three valued logic versus two valued logic.

N. Shamsundar
University of Houston Received on Thu Nov 17 2005 - 17:27:55 CET

Original text of this message