在包含空值的列上将可选的 sql 参数留空时,我很难返回我期望的所有结果。
假设您有一个包含以下内容的表(referredby 是可选的,因此可以为 NULL):
Customertable
ID CustomerName ReferredBy
1 Aaron Joe
2 Peter NULL
3 Steven Joe
假设我想使用一个可选的 SQL 参数查询 referredby 字段,如下所示:
declare @referredby as varchar(15)
select id, customername
from customertable<br>
where referredby = isnull(@referredby, referredby)
如果我将参数保留为空,这只会返回:
1 亚伦
3 史蒂文
如何使用可选参数返回所有 3 个结果?
最佳答案
试试这个:
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
关于带有可选参数和可能的空列的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092576/