请查看以下查询
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,则拒绝返回结果。
如何使程序适用于这两种情况?
由于
答案 0 :(得分:3)
(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