100. View the Exhibit and examine the structure of the PROMOTIONS table.
Which SQL statements are valid? (Choose all that apply.)
A. SELECT promo_id, DECODE(NVL(promo_cost,0), promo_cost, promo_cost * 0.25, 100) "Discount"
FROM promotions;
B. SELECT promo_id, DECODE(promo_cost, 10000,DECODE(promo_category, 'G1', promo_cost *.25, NULL),NULL) "Catcost"
FROM promotions;
C. SELECT promo_id, DECODE(NULLIF(promo_cost, 10000), NULL, promo_cost*.25, 'N/A') "Catcost"
FROM promotions;
D. SELECT promo_id, DECODE(promo_cost, >10000, 'High', <10000, 'Low') "Range"
FROM promotions;
C 中参数类型不一致
decode只能用作等值判断 D不对
Answer: AB
Which SQL statements are valid? (Choose all that apply.)
A. SELECT promo_id, DECODE(NVL(promo_cost,0), promo_cost, promo_cost * 0.25, 100) "Discount"
FROM promotions;
B. SELECT promo_id, DECODE(promo_cost, 10000,DECODE(promo_category, 'G1', promo_cost *.25, NULL),NULL) "Catcost"
FROM promotions;
C. SELECT promo_id, DECODE(NULLIF(promo_cost, 10000), NULL, promo_cost*.25, 'N/A') "Catcost"
FROM promotions;
D. SELECT promo_id, DECODE(promo_cost, >10000, 'High', <10000, 'Low') "Range"
FROM promotions;
SQL> SELECT promo_id,
2 decode(nvl(promo_cost, 0), promo_cost, promo_cost * 0.25, 100) "Discount"
3 FROM sh.promotions
4 WHERE rownum <= 1;
PROMO_ID Discount
-------- ----------
999 0
1 row selected
SQL> SELECT promo_id,
2 decode(promo_cost,
3 10000,
4 decode(promo_category, 'G1', promo_cost * .25, NULL),
5 NULL) "Catcost"
6 FROM sh.promotions
7 WHERE rownum <= 1;
PROMO_ID Catcost
-------- ----------
999
1 row selected
C 中参数类型不一致
SQL> SELECT promo_id,
2 decode(nullif(promo_cost, 10000), NULL, promo_cost * .25, 'N/A') "Catcost"
3 FROM sh.promotions;
SELECT promo_id,
decode(nullif(promo_cost, 10000), NULL, promo_cost * .25, 'N/A') "Catcost"
FROM sh.promotions
ORA-01722: 无效数字
decode只能用作等值判断 D不对
Answer: AB