0. 実験ユーザー「dicdic」でコネクトする。
SQL> conn dicdic/Oracle11g
接続されました。
SQL>
|
1. 【Not条件の指定】最終学歴コードが高卒以外の人、
つまり大学院院か、高専出身、専門学の出身の人。NOTの位置に注意!
SQL> SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE NOT 最終学歴コード = 1;
氏名 最終学歴コード
---------------------------------------- --------------
向井 寿男 2
大畑 花歩 5
小松 定男 2
井上 成康 5
・
・
・
北山 静子 2
久米 幸平 2
曽我 孝宏 2
石岡 敦 2
289行が選択されました。
SQL>
|
2. 「=」の代わりに、「<>」でもよい。
SQL> SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE 最終学歴コード <> 1;
氏名 最終学歴コード
---------------------------------------- --------------
向井 寿男 2
大畑 花歩 5
小松 定男 2
井上 成康 5
・
・
・
北山 静子 2
久米 幸平 2
曽我 孝宏 2
石岡 敦 2
289行が選択されました。
SQL>
|
3. 「=」の代わりに、「!=」でもよい。
SQL> SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE 最終学歴コード != 1;
氏名 最終学歴コード
---------------------------------------- --------------
向井 寿男 2
大畑 花歩 5
小松 定男 2
井上 成康 5
・
・
・
北山 静子 2
久米 幸平 2
曽我 孝宏 2
石岡 敦 2
289行が選択されました。
SQL>
|
4. 「=」の代わりに、「^=」でもよい。
SQL> SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE 最終学歴コード ^= 1;
氏名 最終学歴コード
---------------------------------------- --------------
向井 寿男 2
大畑 花歩 5
小松 定男 2
井上 成康 5
・
・
・
北山 静子 2
久米 幸平 2
曽我 孝宏 2
石岡 敦 2
289行が選択されました。
SQL>
|
5. NOTの位置を間違えるとこうなる。私はついつい、どうしてもLikeの手前にNOTをつけてしまうことがある。
SQL> SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE 最終学歴コード NOT = 1;
SELECT 氏名,最終学歴コード FROM TT01_学生 WHERE 最終学歴コード NOT = 1
*
行1でエラーが発生しました。:
ORA-00920: 関係演算子が無効です。
SQL>
|
6. 「生年月日が199から始まらない」つまり、1990年代生まれではない人を
抽出する。サンプルデータベースの場合、結果的に1980年代生まれの一覧になる。
SQL> SELECT 氏名,生年月日 FROM TT01_学生 WHERE NOT 生年月日 Like '199%';
氏名 生年月日
---------------------------------------- ----------
窪田 信玄 19890606
須藤 貞次 19890507
黒田 比呂美 19890513
望月 淳三 19890613
・
・
・
柴崎 拓也 19890815
内山 三喜 19891104
児玉 清志 19890924
溝口 陽和 19670929
147行が選択されました。
SQL>
|
7. 私はついつい、どうしてもLikeの手前にNOTをつけてしまう理由のひとつがコレ。
「NOT =」はダメだけど、「NOT Like」は構文エラーにならず、きちんとSelectできる。
SQL> SELECT 氏名,生年月日 FROM TT01_学生 WHERE 生年月日 NOT Like '199%';
氏名 生年月日
---------------------------------------- ----------
窪田 信玄 19890606
須藤 貞次 19890507
黒田 比呂美 19890513
望月 淳三 19890613
・
・
・
柴崎 拓也 19890815
内山 三喜 19891104
児玉 清志 19890924
溝口 陽和 19670929
147行が選択されました。
SQL>
|
8. TOEICを受けていない人はTOEIC列がNullになっているはず。
受けている人だけを抽出したいんだけど....
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE NOT TOEIC = Null;
レコードが選択されませんでした。
SQL>
|
9. う〜ん。これでもやはりダメ。0件なワケないのだが...なぜか抽出できない...。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE NOT TOEIC Like Null;
レコードが選択されませんでした。
SQL>
|
10. う〜ん。またしてもダメ。0件なワケないのだが...なぜか抽出できない...。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE TOEIC <> NULL;
レコードが選択されませんでした。
SQL>
|
11. ますますひどくなった。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE TOEIC NOT Null;
SELECT 氏名,TOEIC FROM TT01_学生 WHERE TOEIC NOT Null
*
行1でエラーが発生しました。:
ORA-00920: 関係演算子が無効です。
SQL>
|
12. やっとできた。「IS NOT NULL」というひとまとまりの構文として覚えたほうがよさそうだ。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE TOEIC IS NOT Null;
氏名 TOEIC
---------------------------------------- ----------
窪田 信玄 802
須藤 貞次 998
黒田 比呂美 955
望月 淳三 730
・
・
・
谷口 梨央 279
栗本 翔太 253
塚本 啓二 263
広瀬 和彦 174
2209行が選択されました。
SQL>
|
13. IS NOT Nulも当然、他のwhere条件との併用も可能。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 WHERE TOEIC IS NOT Null and rownum < 10;
氏名 TOEIC
---------------------------------------- ----------
窪田 信玄 802
須藤 貞次 998
黒田 比呂美 955
望月 淳三 730
岩田 昌信 976
菅沼 和奏 628
岩谷 彦太郎 938
島津 昌孝 549
下川 里沙 777
9行が選択されました。
SQL>
|
|