为参数赋值空值不会产生结果......为什么?

时间:2012-02-07 03:42:43

标签: sql-server sql-server-2005

请查看以下查询

declare @t table(roleid int null,EmailAddress varchar(50) null)
insert into @t select null,'fghfgf' union all select 1,null union all select 2,'xcfgcgcfg'
select * from @t

declare @role_id int = null
select EmailAddress from @t where roleid = @role_id

如果我将1 0r 2作为值传递给@role_id,我可以获得正确的电子邮件地址。但是,如果将值指定为NULL,则拒绝返回结果。

如何使程序适用于这两种情况?

由于

2 个答案:

答案 0 :(得分:3)

SQL中的

(MS flavor)涉及NULL的操作返回false。你需要

select EmailAddress from @t where role_id IS NULL OR roleid = @role_id

答案 1 :(得分:1)

在T-SQL中没有任何东西== null(如果我记得的话,还有ANSI SQL)。

尝试where roleid = @role_id OR @role_id is null