COALESCE関数とは
COALESCE(コアレス)とは、リストの最初の非NULL値を返します。非NULL値がない場合は、NULLを返す関数です。
例)
SELECT COALESCE('山田', '鈴木', '田中');
/*
=>
'山田'
*/
SELECT COALESCE(NULL, '鈴木', NULL);
/*
=>
'鈴木'
*/
SELECT COALESCE(NULL, NULL, '田中');
/*
=>
'田中'
*/
SELECT COALESCE(数値型の列, 0);
/*
数値型の列の出力
NULLが格納されている場合は0を返す
*/
COALESCEで「NULL」を別の値に置き換え
例1) ユーザーテーブル
名前 | ポイント | 性別 |
---|---|---|
山田 | 200 | 男 |
鈴木 | 220 | NULL |
田中 | 250 | 女 |
SELECT 名前, ポイント, COALESCE (性別, 'この値はNULLです') AS 性別
FROM ユーザー
例1の結果
名前 | 年齢 | 性別 |
---|---|---|
山田 | 200 | 男 |
鈴木 | 220 | この値はNULLです |
鈴木 | 250 | 女 |
例2) ユーザーテーブル
名前 | ポイント | 性別 |
---|---|---|
山田 | 200 | 男 |
鈴木 | 220 | 女 |
田中 | NULL | 女 |
SELECT 名前, COALESCE (ポイント, 0) AS ポイント, 性別
FROM ユーザー
例2の結果
名前 | 年齢 | 性別 |
---|---|---|
山田 | 200 | 男 |
鈴木 | 220 | 女 |
田中 | 0 | 女 |
値がNULL際に任意の値を返したい時に使えます。COALESCEを使用する際は、RDBによって関数の動作が異なる場合があるので、お使いのRDBの公式サイトでCOALESCEの動作確認した方が良いですね。
参考
MySQL公式サイト
スッキリわかるSQL入門
【MySQL】最初に見つかった「NULLじゃない」値を返すCOALESCE()を使ってみる。