如何使用Case或Coalesce检查WHERE语句中的列是否为NULL

时间:2019-02-01 19:38:41

标签: sql-server stored-procedures

是否可以通过where语句放置大小写或合并以检查值是否为null?在下面的示例中,如果工资表为空,则该查询将不起作用。

    @EmployeeID varchar (10)
AS
BEGIN
    SELECT 
        Employee.FirstName, HRTable.Social, PayrollTable.Sallary
    FROM 
        Employee AS Employee
    LEFT JOIN 
        HRTable AS HRTable ON Employee.ID = HRTable.ID
    LEFT JOIN 
        PayrollTable AS PayrollTable ON PayrollTable.ID = HRTable.ID
    WHERE 
        (Employee.ID = @EmployeeID) 
        AND (PayrollTable.ID = @EmployeeID)
END

这是我需要说的:

WHERE 
    (Employee.ID = @EmployeeID AND IF PayrollTable.ID IS NOT NULL THEN 
PayrollTable.ID = @EmployeeID)

当然是行不通的,所以我假设应该使用CASE或Coalesce,但是由于SELECT语句中不需要它,因此我不确定如何使用它。

1 个答案:

答案 0 :(得分:0)

可以肯定,您可以将这些简化为一些类似的内容。请注意,并非所有内容都塞在左侧,因此更容易看到正在发生的情况。别名消除了打字的麻烦,并使阅读更容易。

WideCharToMultiByte()