過去問解きまくり研究所 ホーム

令和2年度 10月 午前Ⅱ 問7

データ操作

NULLに関する問題

表Rと表Sに対し,SQL文を実行して結果を得るとき,aに入れる字句はどれか。ここで,結果のNULLは値が存在しないことを表す。

R

ID名称1
1AAA
2BBB
3CCC

S

ID名称2
2bbb
3ccc
4ddd

〔結果〕

ID名称1名称2
1AAANULL
2BBBbbb
3CCCccc
4NULLddd

〔SQL文〕

SELECT [  a  ] (R.ID, S.ID) AS ID, 名称1, 名称2
  FROM R FULL JOIN S ON R.ID = S.ID
  ORDER BY ID
答えと解説を見る

✓ これが正解アCOALESCE

解説

COALESCEで、R.IDがNULLならS.IDを使ってIDの列を埋めます。

R FULL JOIN S は、両方の表のIDが一致する行を結び付け、相手のない行も両側から残します。結合した結果のR.IDとS.IDの組は、(1, NULL)、(2, 2)、(3, 3)、(NULL, 4)の4行です。結果のID列が1、2、3、4と埋まるには、R.IDがNULLでなければその値を、NULLならS.IDを返す働きが必要です。COALESCEは、引数を先頭から見て最初のNULLでない値を返す関数なので、4行それぞれで1、2、3、4が得られ、結果と一致します。完全外結合でできたNULLの穴を、もう一方の列の値で埋めたいときに使う関数だと覚えておくと見分けられます。

ほかの選択肢はなぜ違うのか

出典:令和2年度 10月 データベーススペシャリスト試験 午前Ⅱ 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)