Hi all,

I have to follow-up to myself, as I forgot one important thing:

Joerg Bruehe wrote:

[[...]]
so in SQL for *any* comparison operator "op" ( = < > <> ... LIKE ... ) and *any* known (= non-NULL) value x (column, literal, expression, ...) the result of
     x  op  NULL
is UNKNOWN.

The same holds if you compare two NULL expressions:
It is UNKNOWN how two unknown (missing) values relate to each other.


As a rough analogy, consider comparing some visible object to one which is hidden behind a curtain: You cannot tell whether they are identical or not, which one is larger, ... , so the result is UNKNOWN. Especially, the result is *not* FALSE !

And similar, you cannot say anything about two objects which are both hidden, especially, you cannot claim them to compare equal ! So even if two expressions "x" and "y" (say two columns) both are known to be NULL, the comparison
     x = y
yields UNKNOWN.

If you really want two NULL expressions to match a comparison, this should work:
    SELECT  x, y, z  FROM  tab
    WHERE  x = y  OR  x IS NULL AND y IS NULL
(or any other comparison operator replacing the '=').


Regards,
Joerg

--
Joerg Bruehe, Senior Production Engineer
MySQL AB, www.mysql.com


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to