[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, 開発メモ
-,

関連記事

OracleDataaccessでどハマリして、勉強になったとかじゃなくお客さんに迷惑かけたし、もう穴を掘って埋まりたい

みんなは、どうやってOracleDataaccessを筆頭に、複数バージョンが入り乱れるDLLを管理してるのか教えてください。 マジで。

VisualStudioでデータテーブルの中身確認できるの便利すぎワロタw

DataSetビジュアライザーで、DataTableの中身が確認できるのが便利すぎたのでメモ。 データテーブルって気軽に使えるけど、中身の確認がしち面倒くさい件 本当のところはどうなのか?ってのは知ら …

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

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

Oracle11gでパスワードの有効期限を変更する

先日のOra-28001ですが、他のユーザーも同様になってましたw 当然ですね・・・ 日本の中心付近で仕様変更と闘うSE日記Oracleで「Ora-28001:the password has exp …

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

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


カテゴリー