」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > SQL 中的 NULL 處理

SQL 中的 NULL 處理

發佈於2024-07-31
瀏覽:262

NULL Handling in SQL

介紹

在 SQL 中處理 NULL 值是每個資料庫專業人員必須掌握的基本面向。 NULL 表示資料庫表中缺少或未定義的值,正確處理這些值對於確保資料操作的完整性和準確性至關重要。本文將深入探討 SQL 中 NULL 的概念、其意義以及處理 NULL 值的各種策略。

了解 SQL 中的 NULL

SQL中的NULL是一個特殊標記,用來指示資料庫中不存在某個資料值。它不等於空字串或零值。相反,NULL 表示不存在任何值。資料庫表中 NULL 值的存在可能會影響查詢結果,尤其是在執行比較、聚合和聯結等操作時。

NULL 的主要特徵

  1. 不確定值:NULL表示未知或不確定值。
  2. 非可比性:涉及 NULL 的比較(例如 =、)總是產生 NULL,而不是 TRUE 或 FALSE。
  3. 函數中的特殊處理:許多 SQL 函數在處理 NULL 值時都有特定的行為。

在 SQL 中使用 NULL

檢查 NULL

若要檢查值是否為 NULL,請使用 IS NULL 或 IS NOT NULL 運算子。例如:

SELECT * FROM employees WHERE manager_id IS NULL;

此查詢檢索沒有經理的所有員工。

NULL 和比較運算符

使用標準比較運算子(=、!=、

SELECT * FROM employees WHERE manager_id = NULL;

此查詢不會傳回任何行,即使某些 manager_id 值為 NULL。相反,您應該使用:

SELECT * FROM employees WHERE manager_id IS NULL;

聚合中的 NULL

SUM、AVG、COUNT 等聚合函數對 NULL 值的處理方式不同。例如,SUM 和 AVG 忽略 NULL 值,而 COUNT 可以在明確指定的情況下對它們進行計數。

SELECT SUM(salary) FROM employees;  -- NULL values are ignored
SELECT AVG(salary) FROM employees;  -- NULL values are ignored
SELECT COUNT(manager_id) FROM employees;  -- NULL values are ignored
SELECT COUNT(*) FROM employees WHERE manager_id IS NULL;  -- Counts only NULL values

處理連線中的 NULL

執行連線時,NULL 值可能會導致意外結果。例如,INNER JOIN 排除連接條件中具有 NULL 值的行,而 LEFT JOIN 則包括它們。

SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.id;

由於 LEFT JOIN,此查詢會擷取所有員工,包括那些沒有部門的員工。

處理 SQL 查詢中的 NULL

使用合併

COALESCE 函數傳回表達式清單中的第一個非 NULL 值。它對於用預設值替換 NULL 很有用。

SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id
FROM employees;

此查詢將 NULL manager_id 值替換為字串「No Manager」。

使用 IFNULL 或 ISNULL

許多 SQL 方言提供 IFNULL (MySQL) 或 ISNULL (SQL Server) 等函數來處理 NULL 值。

-- MySQL
SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees;

-- SQL Server
SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;

使用 NULLIF

如果兩個參數相等,NULLIF 函數傳回 NULL;否則,它會傳回第一個參數。它對於避免被零除錯誤很有用。

SELECT price / NULLIF(quantity, 0) AS unit_price
FROM products;

此查詢透過在數量為零時傳回 NULL 來防止被零除。

NULL 處理的最佳實踐

  1. 定義預設值:建立表格時,定義列的預設值以盡量減少 NULL 的出現。
  2. 使用適當的函數:利用 COALESCE、IFNULL 和 NULLIF 等函數有效地處理 NULL 值。
  3. 驗證資料:實施資料驗證規則以防止出現不必要的 NULL 值。
  4. 考慮資料庫設計:設計資料庫架構以適當處理 NULL 值,考慮對查詢和效能的影響。

結論

在 SQL 中處理 NULL 值需要仔細考慮和理解它們在不同操作中的行為。透過使用適當的 SQL 函數並遵循最佳實踐,您可以確保資料庫查詢產生準確且可靠的結果。無論您是檢查 NULL、執行聚合還是連接表,正確的 NULL 處理對於維護資料完整性和在 SQL 操作中實現所需結果都至關重要。

版本聲明 本文轉載於:https://dev.to/kellyblaire/null-handling-in-sql-1mp2?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3