2010-11-23 6 views
1

J'ai une table employésparamètre à vérifier est nul ou n'est pas nul dans SQL Server 2008?

 Eno  ename image 

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

Je passe le paramètre à la requête

declare @a varchar(10) 

    select * from employee where ? 

? si je passe l'image n'est pas nulle signifie que je veux tous les détails des employés qui ont une image autre sage

je veux l'image est null détails de l'employé qui n'ont pas d'image.

Répondre

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

Pas sûr à 100% mais je pense que vous voulez

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

C'est court et doux mais pas SARGable il ne fonctionnera pas bien:

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

Pour de meilleures performances, J'y vais avec:

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