Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL - Conditional WHERE clause

I have a SQL Server 2005 stored procedure that performs a query. This stored procedure takes in three parameters. The parameters are as follows:

@StateID as int,
@CountyID as int,
@CityID as int

These parameters are used to query a list of customers. I want to basically do a "AND" if the parameter value is not null. However, I cannot do an if-else at this time. How do I add these clauses if the parameter value is not null. In other words:

SELECT
  *
FROM
  Customer c
WHERE
 c.StateID=@StateID 
 -- AND c.CountyID=@CountyID IF @CountyID IS NOT NULL
 -- AND c.CityID=@CityID IF @CityID IS NOT NULL
like image 244
user208662 Avatar asked Nov 29 '22 19:11

user208662


2 Answers

Couple those with some OR statements:

SELECT *
FROM
    Customer c
WHERE
    c.StateID=@StateID
    AND ( c.CountyID=@CountyID OR @CountyID IS NULL )
    AND ( c.CityID=@CityID OR @CityID IS NULL )

For each of those parameters, if it is null, then the check is basically ignored.

like image 100
Aaron Avatar answered Dec 04 '22 07:12

Aaron


SELECT * 
FROM Customer c 
WHERE c.StateID=@StateID 
AND c.CountyID= ISNULL(@CountyID, c.CountyID) 
AND c.CityID = ISNULL(@CityID, c.CityID)
like image 35
Alex Bagnolini Avatar answered Dec 04 '22 07:12

Alex Bagnolini