知らなかったら、多分CASEとかで判定してた。
まぁ、人の書いたSQLは勉強になるよねって話・・・じゃないなw
事の発端は、今のプロジェクトで別の人が作った画面の修正をやることになったこと。
その人は、1ヶ月以上前にプロジェクトからフェードアウトしていったので、今更修正をお願いなんて出来ないということで、俺に白羽の矢が立った。
というか、この修正をやるときには、修正できるプログラマは俺一人って状況だったけどねw
初めて見たCOALESCE
ぶっちゃけ、必要な時にググって使えりゃいいだろって感じなので、いちいち関数の細かい使い方までは覚えてないし、自分から新規開拓しにいくことも無い。
ただ、今回はCOALESCEが使われていて、見たこと無いし、欲しい値が確認できないし~で調べたら、最初の有効値を返すと。
select coalesce(null,null,9,null,1) as value from dual;
分かりやすくnullにしたけど、テーブルの判定したい項目とか、他のテーブルとのJOINの結果とかかな。
実行すると、9が表示される。
■001
最初にnullじゃない値は「9」なので。
例えば、これを単純に分岐で書こうとすると、こんな感じになる。
SELECT CASE WHEN NULL IS NOT NULL THEN 1 WHEN NULL IS NOT NULL THEN 2 WHEN 9 IS NOT NULL THEN 3 WHEN NULL IS NOT NULL THEN 4 WHEN 1 IS NOT NULL THEN 5 ELSE '' END AS VALUE FROM dual;
うげ・・・長いわw