0

我有一个用户请求,希望能够按员工 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如果我为or提供值,它会很好用@Name

我想不通的是如何让它返回每个人 if@EmpID is null@Name is null.

4

1 回答 1

1

OR在您的子句中添加一个额外的语句WHERE

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

如果两者都是和@EmpID,则所有员工都将被退回。请记住该子句:@NameNULLWHERE

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

仍将适用于任何选定的员工。

于 2012-07-19T21:15:50.360 回答