Home実験室 − No.0025


        No.0025(SQL)
        Null値の代替え表示(NVL関数の基本)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 以下のように、1994年の終戦記念日生まれが2人いる(COUNTについては別途リサーチ)

SQL> select count(*) from TT01_学生 Where 生年月日=19940815; COUNT(*) ---------- 2 SQL>



  2. その二人、一人はTOEICを受けているが、もう一人は受けていないね。

SQL> select 氏名,単位数,TOEIC from TT01_学生 Where 生年月日=19940815; 氏名 単位数 TOEIC ---------------------------------------- ---------- ---------- 矢吹 公彦 95 岡 悦夫 90 449 SQL>



  3. 単位数とTOEIC得点を足してみる。例によって、Nullを含む計算結果はNullになるから
     矢吹君の合計は何も表示されない。Nullを0(ゼロ)として計算結果を表示する方法はないか...。

SQL> select 氏名,単位数,TOEIC ,単位数+TOEIC 合計 from TT01_学生 Where 生年月日=19940815; 氏名 単位数 TOEIC 合計 ---------------------------------------- ---------- ---------- ---------- 矢吹 公彦 95 岡 悦夫 90 449 539 SQL>



  4. 【NVL関数の基本】Nullを0(ゼロ)として扱うやり方は、ある。NVL関数を使うのだ。

SQL> SELECT 氏名,単位数,TOEIC,NVL(TOEIC,0) FROM TT01_学生 Where 生年月日=19940815; 氏名 単位数 TOEIC NVL(TOEIC,0) ---------------------------------------- ---------- ---------- ------------ 矢吹 公彦 95 0 岡 悦夫 90 449 449 SQL>



  5. なるほど、NVL関数を使えば、Nullを含む計算結果がNullになることを回避できるわけだ。

SQL> SELECT 氏名,単位数,NVL(TOEIC,0) TOEIC ,単位数+NVL(TOEIC,0) 合計 FROM TT01_学生 Where 生年月日=19940815; 氏名 単位数 TOEIC 合計 ---------------------------------------- ---------- ---------- ---------- 矢吹 公彦 95 0 95 岡 悦夫 90 449 539 SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0025

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system