[ORACLE]最初の有効値を返すCOALESCE・・・読み方分からねぇw

投稿日:

知らなかったら、多分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







-ORACLE, 開発メモ
-,

関連記事

[C#]comboBoxでマウスホイールによる値の変更を禁止する

comboBoxってあるじゃないですか。 アレのお話。 勝手に値が変わってしまうコントロールがある いや、勝手にじゃなく、操作の結果なんだけども・・・ という、こちらの理論は当然ながらお客さんには通じ …

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

ORACLEで「IMP-00013: DBAのみ別のDBAがエクスポートしたファイルをインポートできます。」の解決法。

客先DBのエクスポートしたものがインポートできずに、タイトルのエラーを吐く。 幸い、お客さんの目の前じゃなかったので、ゆっくり調べて解決できたけど、客先で発生したら困るよなぁ・・・ もともと英語のメッ …

[VMWare Fusion]VMWare Fusion 12を導入した話

  日本の中心付近で仕様変更と闘うSE日記 1 Pocket[VMWare Fusion]VMWare Fusion 11がBigSurで使えなかった話。http://ht-jp.net/b …

[ORACLE]今接続しているサーバー・スキーマとかを確認する

Oracle使ってる時に、今どのサーバーに繋いでるの?とか、今どのスキーマに繋いでるの? ってなるとき無いですか? そんなときの確認法。 今、どのサーバーに接続してるんだ? 先日の仮想マシンにOrac …


カテゴリー