2017-08-17 9 views

Antwort

10

In SQL NULL ein spezieller Wert ist, kann nichts jemals gleich oder nicht gleich zu ihm. In der Tat, NULL ist nicht einmal selbst gleich. Wenn Sie nach Nullwerten suchen, müssen Sie den Operator IS verwenden. So müssen Sie Ihre Abfrage ändern, um sie schließen:

SELECT * 
FROM dbo.myTable 
WHERE value !=0 
OR value IS NULL 
0

Sie auch null für etw ersetzen kann, was sonst noch nicht eine Null ist isnull oder coalesce mit

SELECT * 
FROM dbo.myTable 
WHERE ISNULL(value,1) <> 0 
0

NULL ist eine „non-value“ . Einige Vergleichstools ignorieren/überspringen alle NULL. (NULL existiert nicht.)

Sie haben 3 Optionen:

1) Legen Sie Wert (42) statt NULL. Beispiel: Richten Sie eine Standardeinstellung ein ALTER TABLE myTable ADD CONSTRAINT DF_mytable_value DEFAULT (42) FOR value

2) Fügen Sie Ihre Abfragebedingung NULL hinzu.

SELECT * 
FROM myTable 
WHERE value != 1 OR value IS NULL 

3) Vergleichen jedes 0 als 0 und jede else als 1 in Ihrer WHERE Clausel:

SELECT * 
FROM myTable 
WHERE 1 = CASE value WHEN 0 THEN 0 ELSE 1 
Verwandte Themen