2016-12-01 8 views
3

Ich habe meist Anwendungsentwicklung Hintergrund. In Programmiersprachen variable == null oder variable != null funktioniert.Warum verwendet die SQL-Sprache IS NULL oder IS NOT NULL anstelle von = NULL oder <> NULL?

Wenn es um SQL geht, geben Abfragen keine Syntaxfehler zurück, liefern aber auch keine korrekten Ergebnisse.

select SomeColumn from SomeTable where SomeNullableColumn=null 
select SomeColumn from SomeTable where SomeNullableColumn<>null 

Warum wir die Abfragen mit is null oder is not null, um korrekte Ergebnisse zu erhalten schreiben müssen?

select SomeColumn from SomeTable where SomeNullableColumn is null 
select SomeColumn from SomeTable where SomeNullableColumn is not null 

Was sind die Gründe/Anforderungen hinter is null oder is not null statt =null oder <>null ist?

Ist dies ANSI SQL oder Microsofts TSQL-Standard?

+3

Da 'NULL' kein Wert ist, bedeutet dies, dass kein Wert vorhanden ist. Du kannst nichts mit nichts vergleichen. –

+0

Mögliches Duplikat von [why is null ungleich null false] (http://stackoverflow.com/questions/1833949/why-is-null-not-equal-to-null-false) – EoinS

+2

yup Duplikat von http://stackoverflow.com/questions/9581745/sql-is-null-and-null –

Antwort

2

Da null ungleich null ist, wie NaN („keine Zahl“ erzeugt wird, wenn, beispielsweise 0 von 0 oder potenziert von 0 geteilt ist) nicht gleich NaN. Betrachten Sie null als unbekannten Wert (ein unbekannter Wert entspricht nicht unbedingt einem unbekannten Wert).

1

Weil sql auf Mengenlehre und Prädikatenlogik basiert. Diese zwei starken mathematischen Grundlagen enthalten mathematische Logik - Boolean algebra. In dieser Logik existieren drei Werte - TRUE, FALSE and UNKNOWN (=NULL).

Is null wird anstelle von = null verwendet, um Logik zu trennen. Und warum ist es in ANSI-Standard? Es soll es lesbarer machen und dreiwertige Logik trennen.

Gemeinsame Datawarehouses wird durch "" ersetzt, um Qry einfacher zu machen.

Oder versuchen Sie SET ANSI_NULLS OFF Option.

Verwandte Themen