Some DB's say that an empty string is the same as null, it doesn't mean they're right. In fact, it can be rather inconvenient if an empty string in your data also has a meaning (namely 'known to be an empty string' instead of 'unknown')!
This is the behavior in Oracle. And I found that out the hard way... what a PITA.
Anyhow, this isn't specific to Postgres, but here's a Wikipedia entry for how ternary or 3 valued logic works.
http://en.wikipedia.org/wiki/Ternary_logic -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general