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”。