我想如果不爲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)
我想如果不爲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)
如果立方米永遠不能爲null
where cu = isnull(@campid, cu)
爲什麼不簡單地使用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
試試這個:
select *
from cli
where
cu in (select isnull(@campId, id) from [dbo].[camp])
這需要的事實,從陣營選擇將返回@campId如果它不是空的優勢。
我喜歡你的回答比我的更多:) – Kane
大聲笑應該給你投票:-) –
這是非常好的答案,thx張貼...將很快接受。 – user1662812