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]