COALESCEとは?コアレス
COALESCEとは、引数を左から順に評価し、最初に現れたNULLでない値を返す関数。すべてNULLならNULLを返す。CASE式で「式1がNULLでなければ式1、そうでなければ式2…」と書いたものの短縮形にあたり、外部結合や集計で生じたNULLを表示や計算の直前で既定値に寄せる用途で使う。
最終更新:2026-10-06
この語が出る過去問を解く →背景
NULLは算術演算や文字列連結に混ざると結果全体をNULLに引きずり込むため、そのまま画面や帳票へ流すと空欄や誤った合計になる。かといって列そのものにゼロを入れて保存すると、「実績が0だった」と「まだ実績が無い」の区別が失われる。データは不明のまま保持し、読み出す側で意味づけをする——その切り分けを担うのがこの関数で、物理設計でNOT NULL制約を付けるかどうかの判断とも表裏をなす。
具体例
受注表に出荷実績表を左外部結合して残数を出す場面で、未出荷の受注は出荷数がNULLになる。「受注数 - COALESCE(出荷数, 0)」と書けば未出荷の行も受注数がそのまま残数として計算され、引き算の結果がNULLに落ちるのを防げる。
試験での引っ掛け
NULLIF(A, B) は「AとBが等しければNULLを返し、等しくなければAを返す」逆向きの関数で、名前が似ているため取り違えやすい。またSUMやAVGなどの集約関数はもともとNULLの行を無視して計算するため、SUM(COALESCE(数量, 0)) と SUM(数量) は結果が変わらない——NULLを0に置き換えれば平均値が変わる、と考えると誤る。
関連用語
出た過去問
出典:令和2年度 10月試験 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)
表Rと表Sに対し、SQL文を実行して結果を得るとき、aに入れる字句はどれか。ここで、結果のNULLは値が存在しないことを表す。 表R(ID,名称1): 1,AA…
正解:COALESCE
要点:COALESCEは引数のうち最初の非NULL値を返す
FULL JOINでは一方にしか存在しない行が現れ、その側の結合列がNULLになる。結果のID列は左右いずれか値のあるほうを採用しているので、引数を先頭から見て最初の非NULL値を返す関数が必要になる。これに当たるのがCOALESCEである。
出典:令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)
表Aと表Bから、どちらか一方にだけ含まれるIDを得るSQL文のaに入れる字句はどれか。 〔SQL文〕 SELECT COALESCE(A.ID, B.ID) F…
正解:FULL OUTER JOIN
要点:両側の非対応行を残すには完全外部結合を使う
どちらか一方にしか存在しないIDを得るには、まず両方の表の行をすべて残す結合が必要である。完全外部結合なら対応相手のない行も残り、その側の列がNULLになるので、WHERE句でいずれかがNULLの行に絞れば片方だけに存在するIDが取り出せる。よってアが正しい。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。