2013-02-21 8 views

Antwort

11

Jeder Vergleich mit null ist falsch - = und <>, >, <, und so weiter. Sie können null in einer IN Liste auch nicht verwenden - es würde ignoriert werden. Darüber hinaus sind zwei null s nicht sogar gleich zueinander.

Um die NULL-Werte zu erhalten, müssen Sie explizit für sie fragen, wie folgt aus:

SELECT * FROM NAME WHERE FIRST IS NULL OR FIRST != '1' 
9

Jeder Vergleich mit NULL gibt NULL zurück, was FALSE entspricht. Das ist der wahre Vorabend von Nicht-Gleichen.

Wenn Sie NULL-Werte enthalten sein sollen, wählen Sie eine der folgenden Möglichkeiten:

where first <> '1' or first is null 

oder

where coalesce(first, '<null>') <> '1' 
4

In Oracle, null ist kein Rechts Wert betrachtet auswählen, wenn Sie ausdrücklich fragen es:

select * from name where (first != '1') or first is null 

Sie könnten auch NVL verwenden (ähnlich zu verschmelzen):

select * from name where nvl(first,'0') != '1' 
2

Das ist richtig, weil NULL nie sonst mit nichts zu vergleichen ....

die einzige Option dass Sie haben, ist ein NULL-Check als eine oder in dem Befehl definiert

SELECT * FROM NAME WHERE FIRST!=1 OR FIRST IS NULL 

Laut Oracle Dokumentation NULL enthält als ein Wert nicht oder knownm, wenn der Wert nicht ist sinnvoll. Das ist nur der Grund, warum Oracle einen Wert von NULL nicht als NULL betrachtet. Dies ist nur ein FYI, ein Addon. Vielen Dank!

Verwandte Themen