1Z0-071 · Silver SQL
変換関数と条件式の使用
★★☆☆☆
Q08of 20
以下のSQL文で、どのような結果が返されますか。 — Silver SQL 問8
以下のSQL文で、どのような結果が返されますか。
SELECT COALESCE(NULL,NULL,3,TO_NUMBER('4'),5,6,7) FROM dual;Choices選択肢
- Aエラー
- BNULL
- C3正解
- D4
- E5
Answer
正解は、Cです
Explanation解説
COALESCE(val1, val2, ..., valN) は、引数を左から評価して 最初の非NULL値 を返すファンクションです。
今回の式を左から評価すると:
| 引数 | 値 | NULLか? |
|---|---|---|
| 1 | NULL | はい |
| 2 | NULL | はい |
| 3 | 3 | いいえ → これが返る |
| 4 | TO_NUMBER('4') = 4 | (評価されない) |
| 5以降 | 5, 6, 7 | (評価されない) |
最初の非NULL値である 3 が返ります。
重要な制約: COALESCE の引数は すべて同じデータ型 である必要があります。今回は TO_NUMBER('4') で明示的に文字列を数値に変換しているため、すべて数値型となり型エラーにはなりません。
SELECT COALESCE(NULL, NULL, 3, TO_NUMBER('4'), 5, 6, 7) FROM dual;
-- 結果: 3NULL関連関数の比較:
| 関数 | 用途 |
|---|---|
| NVL | NVL(expr1, expr2) - expr1がNULLならexpr2を返す(2引数) |
| NVL2 | NVL2(expr1, expr2, expr3) - NULLか否かで分岐 |
| COALESCE | 複数の引数から最初の非NULL値を返す |
| NULLIF | 2つの値が等しい場合にNULLを返す |