Re: 問題ID: 13539
arashi1977
居住地: 広島
投稿数: 1715
引用:「気がします」、「と思います」と言われても、実際そうなるのですが…
この問題では「NVL2(第1引数, 第2引数, 第3引数)」という関数の挙動についてのものですが、エラーになるものでは
・行の「第1引数:commission列の値」をチェックし、
・NULLではない→第2引数である、行の「commission列」の値を返す
・NULLである→第3引数(ここでは文字列none)を返す
を期待しているのですが、第2引数(commission列)はNUMBER型、であり'none'は文字列なので一致せずエラーになる(ORA-01722: 数値が無効です。)というものです。
で、slachetさんの想定される4は「NVL2(commission, 'setting', 'none')」となっており
・行の「第1引数:commission列の値」をチェックし、
・NULLではない→第2引数である'setting'という文字列を返す
・NULLである→第3引数である'none'という文字列を返す
なので、第2引数と第3引数は型が同じなので問題なく実行される、ということです。
実際に動作検証して確認するのがおすすめですよ。
エラーが出ないはずの選択肢も異なる型を入れようとしているのでエラーになる気がします。
2. が正解となっていますが、4. も正解だと思います。
# sqlplus pingt/oracle@XE
SQL*Plus: Release 11.2.0.2.0 Production on 木 12月 10 13:59:35 2020
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> SELECT NVL2(commission, 'setting', 'none') FROM employees;
NVL2(CO
-------
setting
setting
setting
setting
setting
setting
setting
setting
setting
setting
setting
NVL2(CO
-------
setting
setting
setting
setting
setting
none
none
none
none
none
none
22行が選択されました。
SQL> SELECT NVL2(commission, commission, 'none') FROM employees;
SELECT NVL2(commission, commission, 'none') FROM employees
*
行1でエラーが発生しました。:
ORA-01722: 数値が無効です。
この問題では「NVL2(第1引数, 第2引数, 第3引数)」という関数の挙動についてのものですが、エラーになるものでは
・行の「第1引数:commission列の値」をチェックし、
・NULLではない→第2引数である、行の「commission列」の値を返す
・NULLである→第3引数(ここでは文字列none)を返す
を期待しているのですが、第2引数(commission列)はNUMBER型、であり'none'は文字列なので一致せずエラーになる(ORA-01722: 数値が無効です。)というものです。
で、slachetさんの想定される4は「NVL2(commission, 'setting', 'none')」となっており
・行の「第1引数:commission列の値」をチェックし、
・NULLではない→第2引数である'setting'という文字列を返す
・NULLである→第3引数である'none'という文字列を返す
なので、第2引数と第3引数は型が同じなので問題なく実行される、ということです。
実際に動作検証して確認するのがおすすめですよ。
投稿ツリー
-
問題ID: 13539
(slachet, 2020-12-10 12:43)
-
Re: 問題ID: 13539
(arashi1977, 2020-12-10 14:10)
-
Re: 問題ID: 13539
(arashi1977, 2020-12-10 15:03)
- Re: Re: 問題ID: 13539 (slachet, 2020-12-15 11:35)
-
Re: 問題ID: 13539
(arashi1977, 2020-12-10 15:03)
-
Re: 問題ID: 13539
(arashi1977, 2020-12-10 14:10)