AKM*_*AKM 4 sql t-sql sql-server-2005
当在包含空值的列上将可选 sql 参数留空时,我很难返回我期望的所有结果。
假设您有一个包含以下内容的表(referredby 是可选的,因此可以为 NULL):
Customertable
ID CustomerName ReferredBy
1 Aaron Joe
2 Peter NULL
3 Steven Joe
Run Code Online (Sandbox Code Playgroud)
假设我想使用可选的 SQL 参数来查询引用字段,如下所示:
declare @referredby as varchar(15)
select id, customername
from customertable<br>
where referredby = isnull(@referredby, referredby)
Run Code Online (Sandbox Code Playgroud)
如果我将参数保留为空,则只会返回:
1 Aaron
3 Steven
如何使用可选参数返回所有 3 个结果?
尝试这个:
select id, customername
from customertable
where (referredby = @referredby OR @referredby is null)
Run Code Online (Sandbox Code Playgroud)
由于本文中解释的原因,null = null在 sql server 中进行比较会返回 false(或未知)。正如null != null。
如果您真的喜欢您的语法,我相信您可以通过将 ansi_Nulls 设置为 off 来使其工作:set ansi_nulls off