MySQL - COALESCE関数

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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>)