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

関連記事

SQLのJOINの種類を理解する

これは分かりやすい。 https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ INNNER JOIN FULL OUTER J …

[VB.net]TextBoxで、マウスクリック(1回目)だけ、内容を全選択させる

結構前に書いた記事 日本の中心付近で仕様変更と闘うSE日記[C#]TextBoxで、マウスクリック(1回目)だけ、内容を全選択させるhttp://ht-jp.net/blog/pc/c/c-textb …

何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

今日も今日とて、ORA-01008のエラーに悩まされる。 無慈悲に「バインドされていない変数があります。」ってメッセージは出してくれるんだけど、ビンゴの位置は教えてくれないわけで・・・ 何度目だろう・ …

WindowPagerを使って、会社のノートに仮想デスクトップ環境を用意してみた

WindowPagerのDL先 http://windowspager.sourceforge.net/documentation.html gigazineの紹介記事 http://gigazine …

TortiseSVNなんだけど、自分が原因で「already locked」が出てしまった時の対処法。自分がロックを取ってて、ロックが取れずコミットが出来ない事態に遭遇した・・・

SVNを使っていると、たまにありますね。 ロックが既に誰かに取得されていて、コミットしようとした時に、唖然とするやつ。 ただ、今回は状況が違いました。 いつもなら、「ロック取ってるやつ誰だよ~」って感 …


カテゴリー