我希望我可以在我的where子句中执行sql Server 2005(我知道它无效)中的以下内容.有时@teamID(传入存储过程)将是现有teamID的值,否则它将始终为零,我想要Team表中的所有行.
我使用Case进行了研究,运算符需要在整个语句之前或之后出现,这使得我无法根据@teamid的值使用不同的运算符.除了复制我的select语句之外的任何建议.
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
解决方法
没有案例你可以这样做:
SELECT Team.teamID FROM Team WHERE (@teamid = 0 AND Team.teamID > 0) OR (@teamid <> 0 AND Team.teamID = @teamid)