在sql server 2008中要检查的参数是null还是不为null?

时间:2010-11-23 21:24:25

标签: sql-server-2005

我有一张桌子   雇员

       Eno     ename   image

       1        aaa     a.jpg
       2        bbb     b.jpg
       3        ccc     null
       4        ddd     null

我将参数传递给查询

   declare @a varchar(10)

   select * from employee where ?

?如果我通过图像不是空意味着我想要所有员工细节谁有其他明智的图像

我希望图像为没有图像的员工详细信息。

3 个答案:

答案 0 :(得分:1)

select * 
from employee 
where (@a is null and image is null)
    or (@a is not null and image is not null )

答案 1 :(得分:0)

不是100%肯定,但我认为你想要

WHERE     (@a is null AND image is NULL)
   OR (@a is not null AND image is not NULL)

答案 2 :(得分:0)

这是短暂而甜蜜的,但不是SARGable因此效果不佳:

select *
    from employee
    where coalesce(image,'') = coalesce(@a,'')

为了获得更好的表现,我会选择:

if @a is not null
    select *
        from employee
        where image = @a
else
    select *
        from employee
        where image is null