• I'll simply agree with statements from two prior posts, slightly reworded:

    1) In practice, with normal humans using the data, NULL must have an explicit operational definition to be meaningful. Essentially, some set of people must agree on what NULL means in a given column, and then document that, and others must use that document.

    2) In practice, I try to avoid allowing NULLs as much as possible, because most of the time, they don't actually have an operational definition, and most of the time, the tri-valued logic serves only to generate incorrect results some of the time.

    e.x. For a Quantity field, almost everyone assumes 0 means 0, and 1 means 1. Different people assume NULL means something different. Further, when you actually need more than one distinct non-numeric "meaning", then you still need to fall back on defining specific values, such as "-1 means UNKNOWN" and "-2 means N/A" and "-3 means Will Be Known Later" and so on.

    The real danger of NULLs is that some people assume that their preferred definition must be the one that is being used, without asking. I would suggest that obviously invalid values raise questions more of the time.