![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
初歩的な質問で恐縮ですが、副問合せでたとえば
where empno not in (mgr1,mgr2,mgr3,...,null)
とあったとき
empno<>mgr1 and empno<>mgr2 and ... empno<>null
と同じ意味になるというのは分かるのですが、
なぜempno<>nullがあるとwhere以降が全てnullに
なってしまうのですか?
ごく普通に考えると「mgr1でもmgr2でもnullでもない」のだから、
empnoはmgr1やmgr2やnull以外の数値(なら何でもよい)
というようになると思うのですが…。
このあたりの論理式的な考え方に慣れていないために、
いまいち感覚がつかめません。
どう考えれば分かりやすく理解できるでしょうか?
No.2ベストアンサー
- 回答日時:
NULLは、値が不明であることを意味します。
そして、SQLではTRUE、FALSEからなる2値論理ではなく、UNKNOWNの入った3値論理を使っています。
NULLを含む演算は、不明の値が入っていますので、結果もNULLになります。
また、NULLとの比較は、UNKNOWNになります。
今、T、F、Uであらわします。
empn <> null は、不明の値との比較ですので、結果はUです。
T AND U は、UはTまたはFになる事ができますので、Uになります。
T AND T → T
T AND F → F
T AND U → U
F AND F → F
F AND U → F
U AND U → U
値がNULLか調べるには IS NULL を使います。
empn <> null → empn IN NOT NULL
No.1
- 回答日時:
初めまして。
「NULL」というのはデータベースの世界で、特別なもので難しいものでわかりにくいものです。
--- NULL=値ではない ---
というのが簡単な説明なのですが、つまり質問に書かれているとおり
「empno<>null」があると、where以降がすべてNULLになってしまいます。
値ではないですので、値(empno)と比較した際に「比較ができない」のです。
ですので、比較ができなく値を決めることができず、NULLになってしまいます。
データベースの世界では一番わかりにくい部分です。
お礼が遅くなって申し訳ありません。
nullがデータベースの中で特別なものという認識を
もつことができました。回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 化学 酸化マグネシウムの分子軌道について質問があります。 参考書では、酸化マグネシウム内ではO,Mgともに 1 2023/03/20 13:00
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- 物理学 カッコ1でこの状態での張力Tを求める問題でその時にはTの力が分解されていました。カッコ2ではbの糸を 12 2023/07/13 23:41
- 物理学 質量Mの気球が、密度ρの空気中にある 気球が一定の速さv0で下降していて、気球には抵抗係数γの空気抵 4 2023/07/04 04:08
- 化学 化学の問題について質問です。 「血中グルコースC6 H12 O6 の濃度5.0mmol/l を (m 2 2022/04/17 13:35
- 物理学 鉛直上向きを正とした図での重力の表記 4 2023/07/31 23:41
- 物理学 鉛直下向きにx軸をとる。真上に投げた物体の運動方程式をかけ。ただし物体には抵抗係数αの空気抵抗が働く 5 2023/06/20 02:04
- 化学 科学のモル計算です 2 2022/08/02 15:36
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DATE型にNULLをセットするには?
-
SQL文で素早くNULLを除外する方法
-
副問合せで質問です
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
SQL文で右から1文字だけ削除す...
-
SELECTで1件のみ取得するには?
-
Accessで別テーブルの値をフォ...
-
Excelでセルの書式設定を使用し...
-
select句副問い合わせ 値の個...
-
使うべきでない文字。
-
DataGridViewの内容をDBに反映...
-
最新の日付とその金額をクエリ...
-
SQL>UPDATEと同時にその件数を...
-
ファイル書込みで一行もしくは...
-
JSPのNULLレコード表示について...
-
固定値を含む結合と複数テーブ...
-
oracleの分割delete
-
sum()の出力結果順に並び替えを...
-
Date型にNULLをセットしたい V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文で素早くNULLを除外する方法
-
DATE型にNULLをセットするには?
-
正常終了するが追加されない
-
ストアドプロシージャのSET文に...
-
is null のandについて(日付...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
select句副問い合わせ 値の個...
-
SQL文で右から1文字だけ削除す...
-
GROUP BYを使ったSELECT文の総...
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
select insertで複数テーブルか...
-
JSPのNULLレコード表示について...
-
レコードが存在しなかった場合
-
Access終了時の最適化が失敗?
-
実績累計の求め方と意味を教え...
-
sqlplusの処理が途中でとまる
おすすめ情報