Michael Schröpl: Leeres Datumsfeld abfragen

Beitrag lesen

Hi auch,

Dass Access auch = NULL akzeptiert, ist ein Bonus,
der den Nachteil hat, dass er mit einer anderen DB meist nicht
funktioniert. Leider spricht praktisch jede DB einen anderen
SQL-Dialekt.

Die Frage ist ja auch, was "irgendwas = NULL" für eine Semantik haben
soll. NULL ist ja nicht etwa ein Wert, sondern eine Markierung dafür,
daß *kein* Wert vorhanden ist und ein Vergleich deshalb gar nicht möglich.
Angenommen, man fragt ab "SELECT * FROM T WHERE X = Y", und sowohl X als
auch Y sind NULL, soll das dann ein Treffer sein oder nicht? Hm ...

Dafür gibt es dann eben einen eigenen Operator, mit dem man genau die
NULL-Eigenschaft abfragen kann.

Durch die Existenz von NULL-Werten wird in SQL die gesamte Aussagenlogik
sehr viel komplizierter, weil bei der Verknüpfung mehrerer Terme in
Ausdrücken per AND, OR etc. nun eben nicht nur zwei Werte (TRUE und FALSE),
sondern drei Werte (auch noch NULL) möglich sind.
Und Speicherplatz kostet der NULL-Indikator normalerweise auch noch.

Ein Grund mehr, sämtliche Spalten "NOT NULL" zu definieren, wenn das
inhaltlich zulässig ist.

Viele Grüße
      Michael