在将包含空值的列上的可选sql参数留空时,我将无法返回所有结果。
想象一下,你有一个包含以下内容的表(推荐是可选的,因此可以为NULL):
Customertable
ID CustomerName ReferredBy
1 Aaron Joe
2 Peter NULL
3 Steven Joe
假设我想使用可选的SQL参数查询所引用的字段,如:
declare @referredby as varchar(15)
select id, customername
from customertable<br>
where referredby = isnull(@referredby, referredby)
如果我将参数保留为null,则只返回:
1 Aaron
3史蒂文
如何使用可选参数返回所有3个结果?
答案 0 :(得分:4)
试试这个:
select id, customername
from customertable
where (referredby = @referredby OR @referredby is null)
由于explained in this post的原因,在sql server中比较null = null
会返回false(或未知)。和null != null
一样。
如果你真的喜欢你的语法,我相信你可以通过将ansi_Nulls设置为关闭来使其工作:set ansi_nulls off
答案 1 :(得分:1)
在您的查询中添加以下内容:
SELECT ... FROM ... --other codes here
where (referredby = @referredby) OR (@referredby IS NULL)