2012-07-19 50 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