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



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to