Hallo,
Jetzt frage ich mich nur, warum das auch false ist:
select if(NULL != NULL,'true','false');
wieso fragst Du Dich das? Das ist doch wunderbar erklärt, auch schon oft im derzeit nur über Google durchsuchbaren Archiv.
+---------------------------------+
| if(NULL != NULL,'true','false') |
+---------------------------------+
| false |
+---------------------------------+
Vergleichsoperationen mit NULL als mindestens einem Operanden ergeben in SQL IMMER den Wert NULL. Der Wert NULL ist keiner der Werte, die als true gelten. Wo ist das Problem?
Vielleicht weiß das ja auch jemand hier?
Aber wenn du "IS NULL", bzw. "IS NOT NULL" schreibst bist du auf jeden Fall auf der sicheren Seite.
http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
Hättest Du weitergeklickt und gelesen:
http://dev.mysql.com/doc/refman/5.0/en/problems-with-null.html
<zitat>
In SQL, the NULL value is never true in comparison to any other value,
even NULL. An expression that contains NULL always produces a NULL value
unless otherwise indicated in the documentation for the operators and
functions involved in the expression.
</zitat>
Freundliche Grüße
Vinzenz