2012-07-19 51 views
0

我有一个用户请求,以便能够选择由雇员ID值或员工姓名值数据。在没有要求的情况下,要求所有员工。语法数据在变量A或数据在变量B或数据变量A为空并且变量B为空

我的第一个念头是创建两个变量:@EmpID@Name

然后

select a,b,c,d,e 
where 
(
    c between date1 and date 2 
    and 
    d > 0 
) 
and 
(
    a in (@EmpID) 
    or 
    b = @Name 
) 

,如果我提供值@Empid@Name它的伟大工程。

我想不出的是如何让它返回所有人,如果@EmpID is null@Name is null

回答

1

添加一个额外OR语句将WHERE条款:

and 
    (
     (a = @EmpID) 
     or 
     (b = @Name) 
     or 
     (@EmpID IS NULL AND @Name IS NULL) 
    ) 

如果@EmpID@Name都是NULL,那么所有员工将被退回。请记住,在WHERE条款:

(
    c between date1 and date 2 
    and 
    d > 0 
) 

仍将被应用于选择任何员工。

+0

确定。谢谢 - 这照顾了它。 – user1539109 2012-07-20 14:49:14