我正在尝试写一些类似的东西:
SELECT *
FROM MyTable m
WHERE m.Category = CASE WHEN @Category IS NULL THEN m.Category ELSE @Category END
基本上,我需要m.Category
等于@Category
的行,如果这个行有值;否则,我需要所有的线路。
但如果m.Category
的值为NULL
,则不会发回该行,因为SQL需要一些内容WHERE m.Category IS NULL
而不是WHERE m.Category = NULL
。
那么,我怎么能修改我的请求告诉SQL:“如果@Category
为空,我需要所有行(即使m.Category
为空的行也是如此),但如果@Category
有{}一个值,我只需要m.Category
匹配@Category
的行?
答案 0 :(得分:3)
你可以这样写:
select *
from MyTable m
where @Category is null or m.Category = @Category