COALESCE() 函數 (SQL COALESCE() Function)

COALESCE() 函數會從參數列表中返回第一個非 NULL 的值。如果所有參數都是 NULL,則返回 NULL。

COALESCE() 在處理可能含有 NULL 值的資料時特別實用,可以用來設定預設值。

COALESCE 語法

COALESCE(value1, value2, ..., valueN)

函數會依序檢查每個參數,返回第一個非 NULL 的值。

COALESCE 基本用法 (Example)

SELECT COALESCE(NULL, NULL, 'Hello', 'World');

結果返回:Hello (第一個非 NULL 的值)

SELECT COALESCE(NULL, 100, 200);

結果返回:100

COALESCE 實務應用 (Example)

假設我們有一個 customers 資料表:

C_IdNameNicknamePhone
1張一小張02-12345678
2王二NULLNULL
3李三阿三NULL

若我們希望優先顯示暱稱,若沒有暱稱則顯示姓名:

SELECT C_Id, COALESCE(Nickname, Name) AS DisplayName
FROM customers;

查詢結果:

C_IdDisplayName
1小張
2王二
3阿三

COALESCE 搭配預設值

當資料可能為 NULL 時,可以使用 COALESCE() 提供預設值:

SELECT Name, COALESCE(Phone, '未提供') AS Phone
FROM customers;

查詢結果:

NamePhone
張一02-12345678
王二未提供
李三未提供

COALESCE 與 IFNULL / NVL 的比較

  • MySQL: 有 IFNULL(expr1, expr2) 函數,但只能處理兩個參數
  • Oracle: 有 NVL(expr1, expr2) 函數,同樣只能處理兩個參數
  • COALESCE: 是 ANSI SQL 標準,各資料庫都支援,且能處理多個參數
建議優先使用 COALESCE(),因為它是標準 SQL 語法且更具彈性。