Search code examples
sql-serverstored-proceduresif-statementwhere-clause

How to use If Statement in Where Clause in SQL?


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 '%'+@ClientName+'%' or @ClientName is NULL )    
AND 
 if (@Value=2)
  begin
  (I.RecurringCharge=@Total  or @Total is NULL )    
  end
 else if(@Value=3)
begin
(I.RecurringCharge like '%'+cast(@Total as varchar(50))+'%' or @Total is NULL )  
end

Note: This is not the complete code. Everything is defined in SP. I have just written the code that was needed to understand the issue.


Solution

  • You have to use CASE Statement/Expression

    Select * from Customer
    WHERE  (I.IsClose=@ISClose OR @ISClose is NULL)  
    AND    
        (C.FirstName like '%'+@ClientName+'%' or @ClientName is NULL )    
    AND 
         CASE @Value
             WHEN 2 THEN (CASE I.RecurringCharge WHEN @Total or @Total is NULL) 
             WHEN 3 THEN (CASE WHEN I.RecurringCharge like 
                                   '%'+cast(@Total as varchar(50))+'%' 
                         or @Total is NULL )
         END