Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL zeigt bei einer Ungleich-Abfrage keine Nullwerte an?

In mehreren Sprachen wird NULL unterschiedlich gehandhabt:Die meisten Leute kennen zweiwertige Logik, wobei true ist und false sind die einzigen vergleichbaren Werte in booleschen Ausdrücken (sogar falsch ist als 0 und wahr als alles andere definiert).

In Standard-SQL müssen Sie an eine dreiwertige Logik denken. NULL wird nicht als echter Wert behandelt, man könnte ihn eher "unbekannt" nennen. Wenn also der Wert unbekannt ist, ist es nicht klar, ob in Ihrem Fall state 0, 1 oder irgendetwas anderes ist. Also NULL != 1 ergibt NULL nochmal.

Daraus folgt, dass Sie überall dort, wo Sie etwas filtern, das NULL sein kann, NULL-Werte selbst behandeln müssen. Beachten Sie, dass sich auch die Syntax unterscheidet:NULL-Werte können nur mit x IS NULL verglichen werden statt x = NULL . Siehe Wikipedia für eine Wahrheitstabelle, die die Ergebnisse logischer Operationen zeigt.