MySQL - COALESCE関数
ナビゲーションに移動
検索に移動
概要
COALESCE関数は、引数として渡された値の中から最初の非NULL値を返す関数である。
COALESCE関数はSQL標準の関数であり、主要なRDBMSで同じように使用できるため、MySQL、SQL Server、PostgreSQL、Oracle等で共通して使用できる。
この関数はNULLをデフォルト値に置き換えることができるため、複数の列から最初の有効な値を取得あるいはレポート作成時にNULLを見やすい表示に変換することができる。
※注意
全ての引数がNULLの場合は、NULLを返す。
引数の型は、互換性がある必要がある。(例: 数値型同士、文字列型同士)
基本構文
COALESCE(<値1>, <値2>, <値3>, ...)
使用例
-- 例 1
-- NULLをスキップして最初の非NULL値の1を返す
SELECT COALESCE(NULL, 1, 2); -- 結果: 1
-- 例 2
-- 2つのNULLをスキップして3を返す
SELECT COALESCE(NULL, NULL, 3); -- 結果: 3
-- 例 3
-- 最初の値が非NULLのため、それを返す
SELECT COALESCE(10, 20, 30); -- 結果: 10
-- 例 4
-- phone_number1がNULLの場合は、phone_number2
-- phone_number2もNULLの場合は、'連絡先なし'を返す
SELECT name, phone_number1, phone_number2, COALESCE(phone_number1, phone_number2, '連絡先なし') as contact
FROM customers;
IFNULL関数 (MySQL)
MySQLには、IFNULL関数のような独自の代替関数もある。
ただし、2つの引数のみしか指定できない。
-- MySQLの独自関数
IFNULL(<値1>, <値2>) -- 2つの引数のみ
-- または
IF(<条件>, <値1>, <値2>)