$ man coalesce
COALESCE
条件・NULL の関数引数を左から見て、最初に NULL でなかった値を返す。NULL の穴埋めに使う。
呼び出しの形
COALESCE(値1, 値2, ...)
つまずきやすいところ
すべての引数が NULL なら結果も NULL です。必ず値がほしいなら、最後の引数を必ず NULL にならないものにしてください。
引数の型はそろえる必要があります。
COALESCE(数値の列, '未設定')は型変換に失敗します。COALESCEは必要な分しか評価しません。左が NULL でなければ右は評価されないので、重い副問い合わせを右に置くのは理にかなっています。
実行例
結果は実際に流したものです。同じ SQL を 自由に打てる画面 で試すと、同じ結果になります。
SELECT kokyaku_name, pref, COALESCE(pref, '未登録') AS hyouji FROM kokyaku ORDER BY kokyaku_id
| kokyaku_name | pref | hyouji |
|---|---|---|
| 青葉工業 | 東京都 | 東京都 |
| 白樺物産 | 大阪府 | 大阪府 |
| 黒松システム | 東京都 | 東京都 |
| 赤坂商会 | NULL | 未登録 |
| 三田商事 | 愛知県 | 愛知県 |
5 行
SELECT COALESCE(SUM(suryo), 0) AS goukei FROM juchu_meisai WHERE juchu_id = 9999
| goukei |
|---|
| 0 |
1 行
COALESCE が無ければ NULL になります。
説明
COALESCE は引数を左から順に見て、最初に NULL でなかったものを返します。すべて NULL なら NULL です。引数はいくつでも並べられます。
いちばん多い使い道は「表示のための穴埋め」です。COALESCE(pref, '未登録') と書けば、NULL の代わりに文字を出せます。
計算での使い道も重要です。SUM は対象が 0 行のとき NULL を返すので、COALESCE(SUM(...), 0) と包んで 0 にそろえます。|| による文字列連結も、NULL が混じると全体が NULL になるため、つなぐ前に COALESCE で埋めます。
⚠️ 引数の型はそろえてください。数値の列に文字列の既定値を渡すと、型変換できずエラーになります。
ほかの製品でも通るか
主要 7 製品で通用 そのまま使える: PostgreSQL / MySQL / MariaDB / SQLite / SQL Server / Oracle Database / IBM Db2
次に読む
関係する関数
根拠にした一次情報
- PostgreSQL 18 マニュアル: 条件式(2026-09-02 確認)