Bob Hall wrote:
>The meaning of NULL is defined in the SQL specification; it means
>"not known" or "not applicable".
>
Which is just about as useful as not defining it, actually. The
vagueness is the cause of a great many program bugs when database
designers don't specify what NULL means for a given field. To give a
hypothetical example:
The application is payroll/personnel. A programmer is tasked with
creating forms for data entry on new employees, including supervisor.
If the user doesn't enter a new employee's supervisor, the application
accepts it, figuring that it is not yet known, and stores NULL for the
field ("not known" use of NULL).
Meanwhile, a payroll programmer has been tasked with writing an
application to give the CEO a huge bonus and stock options. To figure
out which employee is the CEO, the application looks for the employee
with NULL for supervisor ("not applicable" use of NULL).
Suddenly, a large number of new hires are fabulously wealthy. Who
screwed up? Answer: the DB designer who didn't specify what NULL meant.
>A zero-length string has no defined meaning. I've done maintenance on
>databases that contained zero-length strings, and they were nightmares.
>I can't think of any reason why you would use a zero-length string in
>a database.
>
>
Because you know that a given person has no middle name?
To represent "no value", as differentiated from "not known"?
Bruce Feist