Có lẽ tôi đã hiểu sai yêu cầu của bạn, nó có dễ dàng như vậy không?
-- 1.) If User want all rows
SELECT * FROM @tbl
-- 2.) If user want rows where ID is NULL
SELECT * FROM @tbl
WHERE ID IS NULL
-- 3.) If user want rows where ID is NOT NULL
SELECT * FROM @tbl
WHERE ID IS NOT NULL
Chỉnh sửa :Vì vậy, bạn muốn sử dụng một tham số để lọc cho phù hợp, hãy xem:
SELECT * FROM @tbl
WHERE @FilterID = 1 -- returns all rows
OR ( @FilterID = 2 AND ID IS NULL) -- returns all null-rows
OR ( @FilterID = 3 AND ID IS NOT NULL) -- returns all not null rows
Bạn cũng có thể sử dụng CASE
trong mệnh đề where, mặc dù nó không được khuyến nghị
.