97. 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.
Purpose
NULLIF
compares expr1
and expr2
. If they are equal, then the function returns null.比较expr1 andexpr2,如果相等,则返回null值。
If they are not equal, then the function returns expr1
. You cannot specify the literalNULL
for
expr1
.如果不等,则返回expr1 。不能指定expr1为空。
If both arguments are numeric data types, then Oracle Database determines the argument with the higher numeric precedence, implicitly converts the other argument to that data type, and returns that data type.
If the arguments are not numeric, then they must be of the same data type, or Oracle returns an error.
如果参数类型不是数字类型,则必须是相同数据类型,否则报错。
The NULLIF
function is logically equivalent to the following
CASE
expression: