Ich habe vor kurzem ein SQL-Code-Snippet gelesen, das mich verwirrt.Nimmt SQL Server NULL-Wert als eine leere Zeichenfolge?
declare @test nvarchar(100) = NULL
select
case
when @test <> '' then 1
else 0
end
war ich sehr zuversichtlich, dass das Ergebnis 1
sein wird, da ich denke, NULL
auf eine leere Zeichenfolge nicht entspricht. Die tatsächliche Ausgabe ist jedoch 0
.
(Ich bin mit MS SQL Server 2012 auf Windows 7 64-Bit)
Soweit ich verstehe, ''
ist eine leere Zeichenfolge, die den Wert enthält 0 Zeichen gibt, und Null
bedeutet, dass die Daten in Abwesenheit. Aber jetzt bin ich mir nicht sicher. Kann mir jemand helfen, es zu klären? Ist das ein Ausnahmefall?
Lesen [this] (http://www.w3schools.com/sql/sql_null_values.asp). Stellen Sie fest, dass Sie Einladungen zu einer Party senden. '' '' ist, als würde man den rsvp mit nichts zurückbekommen. "null" bekommt überhaupt nichts zurück. – JohnHC
Das Ergebnis dieses Vergleichs ist "unbestimmt", nicht wahr oder falsch – Lamak
Wenn Sie einen NULL auf jeder Seite eines Vergleichs haben, ist das Ergebnis weder wahr noch falsch, das Ergebnis ist NULL. Dies bedeutet, dass in Ihrem Vergleich das Ergebnis nicht als wahr bewertet wurde, sondern als NULL, das in das else fällt. –