Eine Theorie Frage ... aufgetretenWhere-Klausel Zeilen abweisen, wenn NULL
Wenn ein Satz von Abfragen wie unten angegeben dann gebrannt wird ...
Create table Temp1(C1 varchar(2))
Create table Temp2(C1 varchar(2))
insert into Temp1 Values('A'),(NULL),('B')
insert into Temp2 Values('B'),(NULL),('C'),(NULL)
select *from Temp1 A,Temp2 B
where A.C1 <> B.C1
... gibt ...
I verwendet A.C1 <> B.C1
in der Where
Klausel.
Aber ich erwarte ...
Um Ergebnis als Ausgabe zu erhalten erwartete ich ISNULL(A.C1,'') <> ISNULL(B.C1,'')
in der Where
Klausel zu verwenden, benötigt.
Meine Frage ist, warum muss ich ISNULL
jedes Mal für die Ausgabe wie erwartet verwenden, da NULL
ungleich String-Daten ist.
Weil null eine spezielle Bedeutung von no value hat. alle Vergleiche, bei denen eine Seite null ist, ergibt null und wird falsch ausgewertet - lesen Sie hier http://msdn.microsoft.com/en-us/library/ms191504(v=sql.105).aspx –
Alles im Vergleich zu 'NULL' gibt immer 'NULL' (unbekannt) zurück, was weder wahr noch falsch ist und daher Ihren Kriterien nicht entsprechen kann. –