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   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ