Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Query with Optional Parameter and Possible Null Column

I am having some difficulty returning all the results I would expect when leaving an optional sql parameter blank on a column that contain null values.

Imagine you have a table with the following (referredby is optional and can therefore be NULL):

Customertable
ID    CustomerName  ReferredBy
1      Aaron         Joe
2      Peter         NULL
3      Steven        Joe

Suppose I want to query with an optional SQL parameter for the referredby field like such:

declare @referredby as varchar(15)

select id, customername
from customertable<br>
where referredby = isnull(@referredby, referredby)

If I leave the parameter null, this would only return:
1 Aaron
3 Steven

How can I use an optional parameter to return all 3 results?

like image 873
AKM Avatar asked Oct 20 '25 04:10

AKM


2 Answers

Try This:

select id, customername
from customertable
where (referredby = @referredby OR @referredby is null)

For reasons explained in this post, comparing null = null in sql server returns false (or unknown). As does null != null.

If you really like your syntax I believe you could make it work by setting ansi_Nulls to off: set ansi_nulls off

like image 184
Abe Miessler Avatar answered Oct 22 '25 18:10

Abe Miessler


Add this line on your query:

SELECT ... FROM ... --other codes here
where (referredby = @referredby) OR (@referredby IS NULL)
like image 33
John Woo Avatar answered Oct 22 '25 17:10

John Woo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!