WHERE子句SQL中的IF ELSE语句

时间:2015-05-24 05:35:54

标签: tsql sql-server-2012

我想从sql中实现以下功能,假设我有@accountId int作为存储过程中的参数,现在如果我将参数作为99999传递,那么在所有select语句中它选择{{1} }否则,如果我传递任何其他参数,则选择WHERE AccountId <> 124。这个语句是一个很长的存储过程的一部分,所以我没有包含整个过程。

WHERE AccountId=@accountId

或者我可以从CASE声明中获得类似的结果。 喜欢的东西,

WHERE (IF(AccountId = 99999) 
       BEGIN
          AccountId <> 124
       END
       ELSE
       BEGIN
          AccountId = @accountId
       END)

我已经编辑了我的问题,对于以不相关的方式提出这个问题我感到抱歉。如果您有意义或需要任何进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

WHERE (AccountId =  1 and  SenderId <> 10) 
   or (AccountId <> 1 and  SenderId =  10) 

WHERE (@AccountId =  9999 and  SenderId <> 10) 
   or (@AccountId <> 9999 and  SenderId =  @AccountId)

答案 1 :(得分:0)

我通常使用的“一个或所有”语法是这样的: (对所有人都是-1,我不会使用任何理论上可能的正数。)

WHERE
    @AccountId IN (AccountID, -1)

并添加您的附加条件,这应该有效:

WHERE
    @AccountId IN (AccountID, -1)
    AND AccountID <> IIF(@AccountID = -1, 124, -1)