データベーススペシャリスト試験 2020年 午前207


表Rと表Sに対しSQL文を実行して結果を得るときaに入れる字句はどれか。結果のNULLは値が存在しないことを表す。
問題画像
COALESCE(正解)
DISTINCT
NULLIF
UNIQUE

解説

SQLのNULL処理関数問題【午前2 解説】

要点まとめ

  • 結論:空欄に入るのはCOALESCEで、NULLを別の値で置き換え結合キーを一つにまとめるためです。
  • 根拠:FULL JOINで両表のIDが片方にしかない場合、NULLが発生し、COALESCEで非NULL値を優先的に取得します。
  • 差がつくポイント:NULLの扱いと結合結果のID列の統一理解が重要で、他の関数との違いを正確に把握しましょう。

正解の理由

FULL JOINは両方の表に存在する行は結合し、片方にしかない行はNULLを含む行として結果に現れます。
ID列はR.IDとS.IDのどちらか一方がNULLになる場合があるため、ID列を一つにまとめるにはCOALESCE関数を使い、NULLでない方のIDを取得します。
これにより、結果のID列はNULLを含まず、両表のIDを統合した正しい値が表示されます。

よくある誤解

DISTINCTやUNIQUEは重複排除のためのキーワードであり、NULLの置換や結合キーの統合には使えません。
NULLIFは2つの値が等しい場合にNULLを返す関数で、今回の目的とは逆の動作です。

解法ステップ

  1. FULL JOINの結果にNULLが含まれる理由を理解する。
  2. 結合キー(ID列)が両表で異なる場合、NULLが発生することを確認。
  3. NULLを非NULL値で置き換え、IDを一つにまとめる関数を考える。
  4. COALESCE関数が複数の引数から最初の非NULL値を返すことを思い出す。
  5. SQL文にCOALESCE(R.ID, S.ID)を入れて結果を確認する。

選択肢別の誤答解説

  • ア: COALESCE
    正解。NULLでない最初の値を返し、IDを統合できる。
  • イ: DISTINCT
    重複排除のためのキーワードであり、NULL処理や値の置換には使えない。
  • ウ: NULLIF
    2つの値が等しい場合にNULLを返す関数で、NULLを非NULLに置き換える目的とは逆。
  • エ: UNIQUE
    制約やインデックスの指定に使うキーワードで、関数ではなく今回の用途に不適切。

補足コラム

COALESCE関数はSQL標準で広く使われ、複数の引数の中から最初に非NULLの値を返します。
NULL処理はSQLの結合や集計で非常に重要で、適切に使うことでデータの欠損を補い、正確な結果を得られます。
FULL JOINは左右両方の表の全行を保持し、片方にしかない行はNULLを含むため、COALESCEとの組み合わせがよく用いられます。

FAQ

Q: COALESCEとNULLIFの違いは何ですか?
A: COALESCEは複数の値から最初の非NULL値を返し、NULLIFは2つの値が等しい場合にNULLを返します。用途が異なります。
Q: FULL JOINでNULLが発生するのはなぜですか?
A: FULL JOINは両表の全行を結合し、片方にしか存在しない行はもう片方の列がNULLになるためです。

関連キーワード: COALESCE, FULL JOIN, NULL処理, SQL関数, 結合キー, NULL置換
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ