>In some cases null is a must. Consider a lab result, where null means "was not done", and zero means "done, none found".
IMHO, this business logic should never be used like that. A status field should be used, which allows, by the same, the possibility of additional status.
So far, I haven't found any use to have NULLs in table. The only place I wasn't able to get rid of that, and only discovered last week, is the new Geography spatial data type of SQL Server which doesn't allow to put something else in there than a spatial data type data or NULL. So, I had to adjust my framework last week to take care of that exception, which in this case, when I create a record, for a table having a Geography field, I would allow NULL.