プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Oracle、CASE式とDECODE関数でのNULLの扱い。
DECODE関数ではNULL=NULLの評価はできる。
CASE式の場合、WHEN句でIS NULLを使わないと駄目。

らしい。
つまりどーゆーこと(--?

DECODE関数の場合は、特にNULLとか気にせず

  DECODE(COL1, NULL, "NULLだよ","NULLじゃないよ")

と書ける。

CASE式の場合は……って、前提としてCASE式には
「単純CASE式」と「検索CASE式」があって、
書式が微妙に違うのだそーな。

単純CASE式の書き方はこんなんφ(--)

  CASE [値]
      WHEN [条件1] THEN [返却値1]
      WHEN [条件2] THEN [返却値2]
      ELSE [返却値default]
  END

  CASE COL1
      WHEN 1 THEN 'one'
      WHEN 2 THEN 'two'
      ELSE 'else'
  END


一方検索CASE式はこんなんφ(--)

  CASE 
      WHEN [条件1] THEN [返却値1]
      WHEN [条件2] THEN [返却値2]
      ELSE [返却値default]
  END

  CASE 
      WHEN COL1 = 1 THEN 'one'
      WHEN COL1 = 2 THEN 'two'
      ELSE 'else'
  END


[値]がなくて好きに条件書ける感じ。
CASE式でNULLを扱う場合は「検索CASE式」の方を使って

  CASE 
      WHEN 
COL1 IS NULL THEN "NULLだよ"
      ELSE "NULLじゃないよ"
  END


と書かないといけないんですってさ。
どこの世界もNULLの扱いは注意が必要っすね(;´A`)
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● Oracle  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

| HOME | next