[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文中で全角文字を使うなと言われたので、ORACLEでJOIN句の条件式をCASE文で分岐させる

JOINの条件式にCase文を入れる http://blog.goo.ne.jp/ilikehobby/e/80b471f96f6d693b6c5df75f18591c0e SQL文中で全角文字を使う …

BIOSパスワードの設定と解除方法

会社のPCでBIOSパスワードを設定してる人も多いかもしれない。 今回はそんなお話。 とあるPCを別の人に貸与することになって、設定とかが終わったんだけど、OSのインストール直後に渡されたみたいで、W …

先日のデグレに引き続き、作業を一個抜かしたら、超絶怒られて始末書書かされた件

タイトルの通りで、始末書書かされました。 社内での信用0です。 先日のデグレの時もでしたが、今日も思いっきり怒られましたよ。 電話越しの無言は怖い。 日本の中心付近で仕様変更と闘うSE日記 1 Use …

[Oracle]regexp_replaceで、改行コード・タブとかのCSV出力時に邪魔になるものを消す

通常、スペースを消したい時とかなら、replaceとかtrimとかで一括で処理してたんだけど、CSVに出力したい時に、複数の処理を纏めるのがスゲェ面倒くさかった。 それがregexp_replaceで …

Oracle Database Bronzeの勉強を始めました。

業務でOracleを使ってます。 DBへの接続と簡単なSQLの確認ぐらいだったら、SQLDeveloperとかのツールを使わずにSQLPlusだけで済ませちゃう人も多いのかな? あとは、SQLのバッチ …


カテゴリー