COALESCE

指定の値の中からNULL値でない最初の値を返却します。

-- Oracle, SQLServer, MySQL, ANSI準拠
COALESCE ( target1, target2 [, target3 ...] )

return : 変換をした値
target1 : 評価する値
target2 : 評価する値

※引数は target3 以降は任意
※ANSI準拠では 評価する値 は1つでも良いように定義されているが、
Oracle, SQLServerでは怒られる模様

 

*
2つの値を比較する場合、以下のように記述します。

-- Oracle
SELECT COALESCE(NULL, 'X', 'Y', NULL, 'Z'),
       COALESCE(NULLIF('X', 'X'), NULL)
  FROM DUAL
;

-- SQLServer
SELECT COALESCE(NULL, 'X', 'Y', NULL, 'Z'),
       COALESCE(NULLIF('X', 'X'), NULL)
;

結果

COALESCE(NULL, ‘X’, ‘Y’, NULL, ‘Z’) COALESCE(NULLIF(‘X’, ‘X’), NULL)
X NULL

 

*
SQLServerで次のような記述はエラーとなります。
賢いのか、融通が利かないのか… (ぼそっ

-- SQLServer
SELECT COALESCE(NULL, NULL)
;

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です