我有一个用户请求,可以按员工ID值或员工姓名值选择数据。如果没有要求拉动所有员工。
我的第一个冲动是创建两个变量:@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
让所有人回复。
答案 0 :(得分: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
)
仍将适用于所选的任何员工。