コマンド道場
IS NULL難易度 ★★☆☆☆

値があるものだけを取る

shain テーブルから、すでに退職した社員(taishoku_on に日付が入っている社員)を取り出してください。列は「name, taishoku_on」の順、退職日の古い順に並べてください。

主要 7 製品で通用 そのまま使える: PostgreSQL / MySQL / MariaDB / SQLite / SQL Server / Oracle Database / IBM Db2

製品ごとの対応表(実測)を見る

  • 「値が入っている」は IS NOT NULL です。<> NULL とは書けません。
  • NULL との比較は真にも偽にもならず「不明」になります。だから専用の述語が用意されています。
● 起動中…

この問題で使えるテーブル(名前をタップすると入力できます)

7

NULL
🔑int不可
text不可
int
データを見る(先頭 5 行)
busho_idbusho_nameparent_busho_id
1経営NULL
2開発1
3営業1
4管理1
5基盤2

18

NULL
🔑int不可
text不可
int
int
numeric(10,0)不可
date不可
date
データを見る(先頭 5 行)
shain_idnamebusho_idjoushi_idsalaryhired_ontaishoku_on
1鈴木1NULL9800002014-04-01NULL
2佐藤217200002016-10-01NULL
3田中225200002019-04-01NULL
4中村225300002020-04-01NULL
5小林224450502024-04-01NULL

解説

結論

値が入っているかどうかは IS NOT NULL で判定します。

なぜ

NULL は「値が無い」という状態で、特定の値ではありません。したがって = NULL も <> NULL も真にならず、結果は「不明」になります。WHERE は真の行だけを残すので、こう書くと 1 行も返りません。エラーにならないぶん気づきにくい誤りです。

このデータでは、退職日が入っている社員が退職者、NULL の社員が在籍中です。「日付が入っているか」を条件にするので IS NOT NULL を使います。

よくある間違い

①<> NULL と書いて 0 行になる ②条件を逆にする。

IS NULL の使い方をはじめから読む

根拠(一次情報)