2012-10-23 54 views
0

我想如果不爲null由@campId過濾,或返回所有,如果空TSQL返回情況下空的所有記錄裏面

這將編譯但不工作打算:

declare @campId int 
select * 
from cli 
where 
    cu in (
     CASE @campId 
      when null then (select id from [dbo].[camp]) 
      else @campId 
     end) 

回答

1

如果立方米永遠不能爲null

where cu = isnull(@campid, cu) 
+0

這是非常好的答案,thx張貼...將很快接受。 – user1662812

0

爲什麼不簡單地使用IF陳述?

DECLARE @campId AS INT 

IF (@campId IS NULL) BEGIN 
     SELECT [Column1], [Column2], ... 
     FROM [dbo].[cli] AS C1 
     INNER JOIN [dbo].[Camp] AS C2 ON C2.[Id] = C1.[Cu] 
END 
ELSE BEGIN 
     SELECT [Column1], [Column2], ... 
     FROM [dbo].[cli] AS 
     WHERE [Cu] = @camp  
END 
1

試試這個:

select * 
from cli 
where 
    cu in (select isnull(@campId, id) from [dbo].[camp]) 

這需要的事實,從陣營選擇將返回@campId如果它不是空的優勢。

+1

我喜歡你的回答比我的更多:) – Kane

+0

大聲笑應該給你投票:-) –

相關問題