wake-up-neo.net

SQL-Abfrage - Wie filtern Sie nach Null oder nicht Null?

Ich möchte einen Datensatz filtern ....

Wenn statusid null ist, filtern Sie den Datensatz (wobei statusId nicht null ist).

Wenn statusid nicht null ist, filtern Sie den Datensatz, wobei statusid dem angegebenen statusid entspricht.

Wie mache ich das? 

29
001

Genau so, wie Sie sagten

select * from tbl where statusid is null

oder

select * from tbl where statusid is not null

Wenn Ihre Status-ID nicht NULL ist, wird sie genau dann ausgewählt, wenn Sie einen tatsächlichen Wert haben. Es ist keine "Wenn" -Logik erforderlich, wenn Sie dies gedacht haben

select * from tbl where statusid = 123 -- the record(s) returned will not have null statusid

wenn Sie auswählen möchten, wo es null oder einen Wert ist, versuchen Sie es

select * from tbl where statusid = 123 or statusid is null
49
JeremyWeir

Wie wäre es mit statusid = statusid. Null ist niemals gleich Null.

3
Zachary Scott
WHERE something IS NULL

und 

WHERE something IS NOT NULL
2
Dmitriy Naumov

set ansi_nulls offgoselect * aus Tabelle t inner join otherTable o on t.statusid = o.statusid go set ansi_nulls on go

1
JStead

Wo immer Sie versuchen, den NULL-Wert einer Spalte zu überprüfen, sollten Sie dies verwenden

IST NULL und IST NICHT NULL

Sie sollten = NULL oder == NULL nicht verwenden.


Beispiel (NULL)

select * from user_registration where registered_time IS NULL 

gibt die Zeilen mit registered_time zurück, Wert ist NULL


Beispiel (NOT NULL)

select * from user_registration where registered_time IS NOT NULL 

gibt die Zeilen mit registered_time zurück, der Wert ist NOT NULL

Hinweis: Das Schlüsselwort null, not null und is ist not case sensitive.

0
programmer

Ich denke das könnte funktionieren:

select * from tbl where statusid = isnull(@statusid,statusid)
0
pcofre