我希望我可以在SQl Server 2005(我知道它無效)中爲我的where子句做類似下面的事情。有時@teamID(傳遞到存儲過程)將是現有teamID的值,否則它將始終爲零,並且我希望Team表中的所有行。SQL中的條件運算符子句條款
我研究了使用Case和操作符需要在整個語句之前或之後來阻止我有一個基於@teamid的值不同的操作符。除了複製我的選擇語句以外的任何建議。
declare @teamid int
set @teamid = 0
Select Team.teamID From Team
case @teamid
when 0 then
WHERE Team.teamID > 0
else
WHERE Team.teamID = @teamid
end
不會認爲動態SQL或兩個IF塊的增加的複雜性是值得的,除非你查詢中國國家體育總會數據庫;-) – Andomar 2010-04-02 19:48:47
但是,性能增益是值得的複雜性和維護成本損失? – tpdi 2010-04-02 20:47:18
所有三個選項都有其優點和缺點 - 在Andomar的建議中錯過了一個括號,事情將無法按預期工作。 – 2010-04-02 22:38:56