HOME >> Tips >> SQL Server Tips >> SQL

NULL処理 複数の項目からNULLでない項目の値を取得する (COALESCE)

 
文書番号:20338




ISNULL 関数を使うと、ある項目がNULLの場合は別の項目の値を取得することができますが、それを複数の項目で実行したいことがあります。
ISNULL 関数をネストして実現することもできますが COALESCE 関数を使うと簡単に実現できます。

COALESCE 関数は指定した複数の項目のうち、NULLでない最初の値を返します。

文法:COALESCE(項目1,項目2,項目3,・・・)


SELECT 項目1,項目2,項目3,項目4,ISNULL(項目1,項目2,項目3,項目4) AS 値

項目1	項目2	項目3	項目4	値
-----------------------------------------------------
AAA	BBB	CCC	DDD	AAA
NULL	BBB	CCC	DDD	BBB
NULL	NULL	CCC	DDD	CCC
NULL	NULL	NULL	DDD	DDD
NULL	NULL	NULL	NULL	NULL

※項目1がNULLの場合は項目2の値を、項目2もNULLなら項目3の値を・・・と順に判断して取得する
 項目はいくつでも(上限は不明)指定可
 すべての項目がNULLの場合はNULLが返る
COALESCE 関数内でサブクエリを実行する場合などは注意が必要です。
詳細は[MSDN] COALESCE (Transact-SQL) を参照。

【参考情報】


[MSDN] COALESCE (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms190349.aspx