一、原题
NVL、NVL2及NULLIF函数的详细用法,参考:
http://blog.csdn.net/holly2008/article/details/25251513
View the Exhibit and evaluate the structure and data in the CUST_STATUS table.

You issue the following SQL statement:
SQL> SELECT custno, NVL2(NULLIF(amt_spent,credit_limit), 0, 1000) "BONUS"
FROM cust_status;
Which statement is true regarding the execution of the above query?
A. It produces an error because the AMT_SPENT column contains a null value.
B. It displays a bonus of 1000 for all customers whose AMT_SPENT is less than CREDIT_LIMIT.
C. It displays a bonus of 1000 for all customers whose AMT_SPENT equals CREDIT_LIMIT, or AMT_SPENT is null .
D. It produces an error because the TO_NUMBER function must be used to convert the result of the NULLIF function before it can be used by the NVL2 function.
答案:C
二、题目翻译You issue the following SQL statement:
SQL> SELECT custno, NVL2(NULLIF(amt_spent,credit_limit), 0, 1000) "BONUS"
FROM cust_status;
Which statement is true regarding the execution of the above query?
A. It produces an error because the AMT_SPENT column contains a null value.
B. It displays a bonus of 1000 for all customers whose AMT_SPENT is less than CREDIT_LIMIT.
C. It displays a bonus of 1000 for all customers whose AMT_SPENT equals CREDIT_LIMIT, or AMT_SPENT is null .
D. It produces an error because the TO_NUMBER function must be used to convert the result of the NULLIF function before it can be used by the NVL2 function.
答案:C
查看 CUST_STATUS表结构和数据,
执行下面的语句:
关于上面的查询哪句话是正确的?
A.报错,因为AMT_SPENT包含空值。
B.显示所有AMT_SPENT小于CREDIT_LIMIT的员工有1000元奖金。
C.显示所有AMT_SPENT等于CREDIT_LIMIT或AMT_SPENT为空的员工有1000元奖金。
D.报错,因为在使用NVL2函数之前,需要使用TO_NUMBER函数把NULLIF函数的结果进行转换。
三、题目解析执行下面的语句:
关于上面的查询哪句话是正确的?
A.报错,因为AMT_SPENT包含空值。
B.显示所有AMT_SPENT小于CREDIT_LIMIT的员工有1000元奖金。
C.显示所有AMT_SPENT等于CREDIT_LIMIT或AMT_SPENT为空的员工有1000元奖金。
D.报错,因为在使用NVL2函数之前,需要使用TO_NUMBER函数把NULLIF函数的结果进行转换。
NVL、NVL2及NULLIF函数的详细用法,参考:
http://blog.csdn.net/holly2008/article/details/25251513