2011-03-28 49 views
28

我想篩選記錄篩選....SQL查詢 - 如何用null或not null

如果statusid爲null,過濾記錄(其中statusId不爲null)

如果statusid是not null,過濾statusid等於指定的statusid的記錄。

我該怎麼做?

回答

45

就像你說的

select * from tbl where statusid is null 

select * from tbl where statusid is not null 

如果您statusid不爲空,那麼它將被選擇就好了,當你有一個實際值,不需要任何「如果「如果這邏輯是什麼,你在想

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

,如果你想選擇它爲空或值,嘗試

select * from tbl where statusid = 123 or statusid is null 
+0

但你怎麼做「如果」? – 001 2011-03-28 03:30:50

+0

看到我的最後加入,其中包含「或」 – JeremyWeir 2011-03-28 03:33:58

+0

謝謝,它現在的作品:) – 001 2011-03-28 03:47:39

3

statusid = statusid怎麼樣?空不等於null。

0

我覺得這可能是工作:

select * from tbl where statusid = isnull(@statusid,statusid) 
1
WHERE something IS NULL 

WHERE something IS NOT NULL 
1

SET ANSI_NULLS關閉 去 SELECT * FROM表t 內部O上t.statusid加入otherTable = O .statusid go set ansi_nulls on go

0

無論你嘗試檢查一個列的NULL值,你應該使用

IS NULLIS NOT NULL

你不應該使用= NULL或== NULL


實施例(NULL)

select * from user_registration where registered_time IS NULL 

將與返回行值是NULL


(NOT NULL)

select * from user_registration where registered_time IS NOT NULL 

將與registered_time值返回行是NOT NULL

注:關鍵字nullnot nullisnot case sensitive