2012-03-21 79 views
0

我有任务,其需要一个参数,并具有结果SQL CASE表达式返回集null和not null

例 参数名称是sizePram(1三种模式=只有零,2 =只不空,3 =二者或全部)

declare @sizeParam int 
set @sizeParam = 1 or 2 or 3 

select * from SalesLT.Product where Size = 
CASE @sizeParam 
    when 1 then is null 
    when 2 then is not null 
    when 3 then all 
end 
+0

'CASE'是返回一个特定的数据类型的表达式。它不是用于控制流程逻辑,也不是用于比较不是特定值的事物,比如“不为空”。您需要使用“CASE”以外的逻辑来执行此操作。 – 2012-03-21 20:49:19

回答

4
select * 
from SalesLT.Product 
where 
    (@sizeParam = 1 and Size is null) or 
    (@sizeParam = 2 and Size is not null) or 
    (@sizeParam = 3) 
1
SELECT * 
    FROM SalesLT.Product 
    WHERE (@sizeParam = 1 AND Size IS NULL) 
     OR (@sizeParam = 2 AND Size IS NOT NULL) 
     OR (@sizeParam = 3) 
0
SELECT * 
    FROM SalesLT.Product 
WHERE (sizeParam <> 1 OR Size IS NULL) 
     AND NOT (sizeParam = 2 AND Size IS NULL);