Ich hatte eine Abfrage (für Postgres und Informix) mit einer NOT INKlausel, die eine Unterabfrage enthielt, die in einigen Fällen NULLWerte zurückgab , was dazu führte, dass diese Klausel (und die gesamte Abfrage) nichts zurückgab .
Wie kann man das am besten verstehen? Ich dachte an NULLetwas ohne Wert und erwartete daher nicht, dass die Abfrage fehlschlägt, aber offensichtlich ist dies nicht die richtige Art zu denken NULL.
x <> NULLbeispielsweise eine Auflösung für anzeigenFALSE, erwarten Sie, dassNOT (x <> NULL)die Auswertung für erfolgtTRUE, und dies ist nicht der Fall. Beide werten zu ausUNKNOWN. Der Trick besteht darin, dass eine Zeile nur dann ausgewählt wird, wenn dieWHEREKlausel (falls vorhanden) als - ausgewertet wird.TRUEEine Zeile wird weggelassen, wenn die Klausel entweder alsFALSEoder ausgewertet wirdUNKNOWN. Dieses Verhalten (im Allgemeinen und für dasNOT INPrädikat im Besonderen) wird vom SQL-Standard vorgeschrieben.