ISNULL()
函数是 SQL Server 中的一个内置函数,用于检查指定的表达式是否为 NULL,如果是,则返回指定的替换值
以下是一个使用 ISNULL()
函数处理联合查询空值的示例:
假设我们有两个表,一个是员工表(Employee),另一个是部门表(Department)。我们想要查询每个员工及其所属部门的名称。但是,有些员工可能没有分配到任何部门,因此部门名称为 NULL。
-- 创建 Employee 表
CREATE TABLE Employee (
EmployeeID INT PRIMARY KEY,
Name NVARCHAR(50),
DepartmentID INT
);
-- 创建 Department 表
CREATE TABLE Department (
DepartmentID INT PRIMARY KEY,
DepartmentName NVARCHAR(50)
);
-- 插入数据
INSERT INTO Employee (EmployeeID, Name, DepartmentID)
VALUES (1, 'Alice', 1), (2, 'Bob', NULL), (3, 'Charlie', 2);
INSERT INTO Department (DepartmentID, DepartmentName)
VALUES (1, 'HR'), (2, 'IT');
现在,我们将使用联合查询和 ISNULL()
函数来查询每个员工及其所属部门的名称。如果部门名称为 NULL,我们将使用 “Unassigned” 作为默认值。
SELECT E.EmployeeID, E.Name, ISNULL(D.DepartmentName, 'Unassigned') AS DepartmentName
FROM Employee E
LEFT JOIN Department D ON E.DepartmentID = D.DepartmentID;
这将返回以下结果:
EmployeeID | Name | DepartmentName
-----------+----------+----------------
1 | Alice | HR
2 | Bob | Unassigned
3 | Charlie | IT
在这个例子中,我们使用了 LEFT JOIN
来连接 Employee 和 Department 表。对于那些没有分配部门的员工,DepartmentName
将显示为 NULL。通过使用 ISNULL()
函数,我们可以将这些 NULL 值替换为 “Unassigned”。