• Glad to see some good, sensible practice being advocated in the first two comments. I feared seeing a load of magic value recipes.
    My comment is that this situation is exactly suited to NULL values. NULL means that something is missing, unavailable, not supplied and is a case that must be dealt with properly. We all hate writing code with loads of ISNULLs or IS (NOT) NULL etc. and even more tiresome is dealing with it inside the application, but missing does not equal '', '1900-10-01', zero 0 or -1 it's NULL!
    If a value added to a table simply can't be NULL it must be defaulted to a meaningful value or that situation handled in the DAL or business logic.
    The fear of NULL is the result of lazy or worse ignorant programmers. It's nothing to worry about people, just write proper code!
    I totally agree with the points above regarding sorting and end user access, no rules are inviolable, but magic values are poisonous to me. Where users have access to data, I try to abstract away the complexities, including NULL values and outer joins where possible.
    Let's show some love for NULL in all its painful reality 🙂