2012-03-21 13 views
0

I有しパラメータを受け取り、結果SQLのCASE式ヌルとヌル

例 パラメータ名はsizePram(1の3つのモードがあり、タスク=のみヌル、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'は、特定のデータ型を返す式です。フローロジックを制御したり、 'not not null 'のような特定の値ではないものを比較することはできません。 'CASE'以外のロジックを使ってこれを行う必要があります。 –

答えて

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);