首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL COALESCE 函數實戰:優雅處理 NULL 值預設值

     編輯:MySQL 資料庫相關知識

COALESCE(v1, v2, ..., vn) 回傳參數列表中第一個非 NULL的值,全 NULL 時回傳 NULL。是處理可為 NULL 欄位預設值的標準寫法,符合 ANSI SQL 標準,跨資料庫可移植。

基本用法


SELECT COALESCE(NULL, NULL, 1);           -- 1
SELECT COALESCE(NULL, NULL, NULL);        -- NULL
SELECT COALESCE(col_a, col_b, 'N/A') FROM t;  -- 依序取第一個非 NULL

實戰場景

場景SQL 範例說明
顯示聯絡方式優先序COALESCE(mobile, phone, email, '未提供')行動電話 → 市話 → Email → 固定字串
數值欄位 NULL 視為 0 參與運算SELECT COALESCE(discount, 0) * price FROM orders;避免 NULL 導致整式結果為 NULL
分頁查詢游標預設值WHERE id > COALESCE(@last_id, 0)首頁無游標時從 0 開始
動態 SQL 條件組裝WHERE status = COALESCE(?, status)參數為 NULL 時忽略該條件

對比:COALESCE vs IFNULL vs CASE

函數參數數標準效能備註
COALESCEN (≥2)ANSI SQL極佳首選,可移植
IFNULL2MySQL 專有極佳簡單雙參數略快
CASE WHEN v IS NOT NULL THEN v ELSE def ENDNANSI SQL稍慢複雜邏輯才需用

最佳實務:預設值處理優先用 COALESCE,簡潔、標準、可讀性高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved