データベース
次のSQL文において、CASE式とNULL処理の結果として正しいものはどれか。 SELECT CASE WHEN score IS NULL THEN '未受験' WHEN score >= 60 THEN '合格' ELSE '不合格' END AS 判定 FROM 成績 WHERE 受験者ID = 1; 受験者ID=1のscoreがNULLである場合の判定の値はどれか。
ア.'不合格'
イ.NULL
ウ.'未受験'正解
エ.SQLエラーが発生し結果は返らない
解説
NULLはSQLの「幽霊」。通常の比較演算子では捕まえられない(NULL = NULLはNULL)。IS NULL/IS NOT NULLという特殊な武器が必要!
なぜ ウ が正解か
CASE式はWHEN句を上から順に評価し、最初に真になった条件の値を返す。Step1: score IS NULL → score=NULLなのでTRUE。Step2: 最初の条件が真なので「未受験」を返してCASE評価終了。NULLとの比較はIS NULLを使うことで正しく捕捉できる。
出典: AI生成問題(学習用)