萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL COALESCE 函數:優雅處理 NULL 值的利器

語法與行為

COALESCE(value1, value2, ..., valuen)

回傳參數列表中第一個非 NULL的值;若全部為 NULL 則回傳 NULL。

範例

SELECT COALESCE(NULL, NULL, 1);           -- 1
SELECT COALESCE(NULL, NULL, NULL, 1);     -- 1
SELECT COALESCE(NULL, NULL, NULL);        -- NULL
SELECT COALESCE(column_name, 0) AS val FROM t;  -- 欄位為 NULL 時顯示 0

典型應用場景

  1. 欄位預設值回退:COALESCE(discount, 0) 避免 NULL 參與運算導致結果為 NULL。
  2. 多欄位優先取值:COALESCE(mobile, email, '未提供') 依優先順序取聯絡方式。
  3. 動態排序/分組:ORDER BY COALESCE(sort_order, 999) 將無排序值置後。

對比:COALESCE vs IFNULL vs CASE

函數參數數標準備註
COALESCE≥2ANSI SQL可移植,支援多參數
IFNULL2MySQL 專用簡潔,僅兩參數
IF(expr, true, false)3MySQL 專用邏輯判斷,非單純 NULL 處理
CASE WHEN col IS NULL THEN ...靈活ANSI SQL最通用,可處理複雜邏輯

效能提示

COALESCE 內部轉為 CASE 表達式,效能相當。避免在大表 WHERE 條件中對欄位使用 COALESCE,改用 IS NULL 判斷以利用索引。

copyright © 萬盛學電腦網 all rights reserved