NULL を扱う

  NVL



数値属性を持つ列に NULL が入っている可能性のある場合は、常に列の参照を

  
nvl( 列名, 0 )
  

とすると問題が発生しにくくなります

例えば、列名 * 0.05 という計算をしたい場合、列の値が NULL の場合は NULL を戻します。
そのような結果を避けるためには、下記のような記述を行ないます。

  
nvl( 列名, 0 ) * 0.05

または

nvl( 列名 * 0.05, 0 )
  

戻り値の型は、列名の型で返されます。

NVL にはもう一つ NVL2 という 関数があり、以下の書式となります

  
nvl2( 式1, 式2, 式3 )
  

この場合、式1 が NULL の場合 式3 が返されますが、式1が NULL で無い場合は 式2が返されます
上記の例を書き変えると以下のようになります

  
nvl2( 列名, 列名 * 0.05, 0 )
  

関数は、条件にも使用できるので、以下の二つの検索は同じ結果を返します

  
select * from 商品 where 単価 >= 1000 or 単価 is NULL

select * from 商品 where nvl(単価,1000) >= 1000
  

NULL データを評価する場合、is NULL か、is not NULL を使用する必要がありますが、そのような場合他の通常のデータと混在させたい場合は、OR 条件を使用しなければならなくなります。しかし、NVL 関数を使用する事によって OR 条件を排除する事ができます










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ