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

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Mon, 12 Dec 2005 11:08:33 +0100
Message-ID: <MPG.1e076a8b1d763c4998973e_at_news.ntnu.no>


In article <mr6pp1dthae49qdiudmgcp8eh66tmve5pp_at_4ax.com>, hugo_at_pe_NO_rFact.in_SPAM_fo says...
> On Fri, 9 Dec 2005 23:54:33 +0100, Jon Heggland wrote:
>
> But you're correct - in the SQL-99 standard, a BOOLEAN (sic!) datatype
> is introduced. According to the description in the standard, a boolean
> value is either True or False. "The truth value of _unknown_ is
> sometimes represented by the null value".

Yep, according to Codd's bad precedent.

> There is a reson to object to the use of "the null value" to represent
> the truth value Unknown. Elsewhere in the standard, the Null value is
> defined as "A special value that is used to indicate the absence of any
> data value". Of course, if Unknown is considered to be a data value for
> a boolean data type (and the rest of the standard clearly indicates it
> is), it should not be represented by the same symbol that is also used
> to represent the absence of a data value, since a data value can not be
> absent and present at the same time.

I agree. Codd does not.

Thanks a lot for the summary of SQL booleans, but you didn't mention the most interesting thing: When you check two SQL-boolean attributes for equality (using '=', in a WHERE clause), and both are Unknown, what is the result? True or Unknown?

> Removing the row and column for NULL from the truth tables and replacing
> them by a line that says that NULLs propagate changes only the
> representation of the tables, not the content.

No. NULL is not part of the domain; it's part of the meta-language. :) Sophistry, yes, but no worse than the convoluted definitions and rules for how NULLs influence other parts of the system.

-- 
Jon
Received on Mon Dec 12 2005 - 11:08:33 CET

Original text of this message