Hope I didn't come off snippy in my last post, I certainly didn't mean too, but looking at it, well...
Anyway, some more stuff on NULLs.
A NULL in a database stands for "undefined" it's different from blank, in that it COULD mean anything, but no one knows. It's kinda like the marks monks made in the margins of the texts they translated when they weren't sure what a word meant.
For instand, someone asked "What would happen if a baby died before he was baptized, would he go to heaven or hell?" The monks didn't know, so they wrote it into the margin. The latin for margin is limbo.
Many decades later, folks who didn't know what the word limbo stood for assumed there was a place called limbo, and that's where purgatory, perdition, and all the other "in between" places of xtianity came from.
To point out how this applies to databases, people often mistake NULL to be a value. It is in fact an unknown value, and therefore gets treated differently from blanks, or anything else.
For instance, the proper test for a null is:
select * from table where field IS NULL
not
select * from table where field=NULL
Since NULL is not a value, nothing can equal it, so the second test is not correct. This doesn't stop some databases (COUGH ORACLE COUGH) from pretending they are, but to make portable code, NULLs need to be treated like an adjective, not a value.
So the only value you can assume that NULL is the same as is limbo. 🙂