How to use If Statement in Where Clause in SQL?

后端 未结 4 453
抹茶落季
抹茶落季 2020-12-17 16:12

I need to use if statement inside where clause in sql.

Select * from Customer
WHERE  (I.IsClose=@ISClose OR @ISClose is NULL)  
AND    
(C.FirstName like \'%         


        
4条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-17 16:44

    SELECT *
      FROM Customer
     WHERE (I.IsClose=@ISClose OR @ISClose is NULL)  
       AND (C.FirstName like '%'+@ClientName+'%' or @ClientName is NULL )    
       AND (isnull(@Value,1) <> 2
            OR I.RecurringCharge = @Total
            OR @Total is NULL )    
       AND (isnull(@Value,2) <> 3
            OR I.RecurringCharge like '%'+cast(@Total as varchar(50))+'%'
            OR @Total is NULL )
    

    Basically, your condition was

    if (@Value=2)
       TEST FOR => (I.RecurringCharge=@Total  or @Total is NULL )    
    

    flipped around,

    AND (isnull(@Value,1) <> 2                -- A
            OR I.RecurringCharge = @Total    -- B
            OR @Total is NULL )              -- C
    

    When (A) is true, i.e. @Value is not 2, [A or B or C] will become TRUE regardless of B and C results. B and C are in reality only checked when @Value = 2, which is the original intention.

提交回复
热议问题