Oracle behandelt '' und NULL gleich. Beim Einfügen von '' erfolgt keine Konvertierung von '' in NULL, sondern lediglich eine Interpretation von '', so wie NULL
das Wort NULL als interpretiert wird NULL
oder rtrim ('a', 'a') als interpretiert wird NULL
.
Hier ist eine Demonstration anhand der folgenden Tabelle und Einfügung:
drop table t1;
create table t1 (c1 varchar2(10));
insert into t1 (c1) values ('');
Die obige Einfügung fügte einen NULL-Wert für c1 ein. Sie können diese Zeile wie folgt auswählen:
SELECT c1 FROM t1;
Wenn Sie eine WHERE-Klausel hinzufügen, um die Gleichheit zu vergleichen, und einer der verglichenen Werte NULL ist, ist das Ergebnis immer unbekannt. Unbekannt wird als falsch ausgewertet, außer dass weitere Operationen mit einem unbekannten Wert unbekannte Werte erzeugen. Alle folgenden geben keine Zeilen zurück, da die WHERE-Klauseln Bedingungen enthalten, die unabhängig von den Daten niemals wahr sind.
SELECT c1 FROM t1 WHERE c1 = '';
SELECT c1 FROM t1 WHERE c1 = NULL;
SELECT c1 FROM t1 WHERE '' = '';
SELECT c1 FROM t1 WHERE NULL = NULL;
Oracle bietet eine spezielle Syntax zum Abrufen von Zeilen mit einer bestimmten Spalte mit Nullwerten - IS NULL
.
SELECT c1 FROM t1 WHERE c1 IS NULL;
Es gibt einige Bedingungen, unter denen Oracle NULL vergleicht und sie als gleichwertig mit anderen NULL-Werten behandelt, z. B. in DECODE-Anweisungen und in zusammengesetzten Schlüsseln.
Weitere Informationen finden Sie in der SQL-Sprachreferenz .