变量A中的数据或变量B或数据变量A中的数据的语法为空,变量B为空

时间:2012-07-19 21:08:35

标签: sql-server tsql variables null

我有一个用户请求,可以按员工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让所有人回复。

1 个答案:

答案 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
)

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