nvl、nvl2與nullif函式用法區別

pwz1688發表於2014-01-14

NVL (expr1, expr2)->expr1為NULL,返回expr2;不為NULL,返回expr1。注意兩者的型別要一致

NVL2 (expr1, expr2, expr3) ->expr1不為NULL,返回expr2;為NULL,返回expr3。expr2和expr3型別不同的話,expr3會轉換為expr2的型別。

NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1。
如下例示:

點選(此處)摺疊或開啟

  1. SQL> with t as
  2.   2 (select '1999' year, 3000 sales, 245 sales1
  3.   3 from dual
  4.   4 union all
  5.   5 select '2000', 2500, 2500
  6.   6 from dual
  7.   7 union all
  8.   8 select '2001', 4500, null
  9.   9 from dual
  10.  10 union all
  11.  11 select '2002', null, 1200
  12.  12 from dual
  13.  13 union all
  14.  14 select null, 1000, 1100 from dual)
  15.  15 select year,
  16.  16 nvl(sales, 0) nvl_s,
  17.  17 nvl(sales1, 0) nvl_s1,
  18.  18 nvl2(year, sales, sales1) nvl2_s,
  19.  19 nullif(sales, sales1) nullif_s
  20.  20 from t
  21.  21 order by 1;

  22. YEAR NVL_S NVL_S1 NVL2_S NULLIF_S
  23. ---- ---------- ---------- ---------- ----------

  24. 1999 3000  245    3000   3000
  25. 2000 2500  2500   2500
  26. 2001 4500  0      4500   4500
  27. 2002 0     1200
  28.      1000  1100   1100   1000

  29. SQL>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1070490/,如需轉載,請註明出處,否則將追究法律責任。

相關文章