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>
|
|