Oracle試験道場

1Z0-071 · Silver SQL

変換関数と条件式の使用

★★☆☆☆
Q08of 20

以下のSQL文で、どのような結果が返されますか。Silver SQL8

以下の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か?
1NULLはい
2NULLはい
33いいえ → これが返る
4TO_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;
-- 結果: 3

NULL関連関数の比較:

関数用途
NVLNVL(expr1, expr2) - expr1がNULLならexpr2を返す(2引数)
NVL2NVL2(expr1, expr2, expr3) - NULLか否かで分岐
COALESCE複数の引数から最初の非NULL値を返す
NULLIF2つの値が等しい場合にNULLを返す