NVL,NVL2,NULLIF,COALESCE

  1. Oracle中一类函数是通用函数。主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以。   
  2.   
  3. 下面简单介绍一下几个函数的用法。   
  4.   
  5. 在介绍这个之前你必须明白什么是oracle中的空值null  
  6.   
  7. 1.NVL函数   
  8.   
  9. NVL函数的格式如下:NVL(expr1,expr2)   
  10.   
  11. 含义是:假如oracle第一个参数为空那么显示第二个参数的值,假如第一个参数的值不为空,则显示第一个参数本来的值。   
  12.   
  13. 例如:   
  14.   
  15. SQL> select ename,NVL(comm, -1) from emp;   
  16.   
  17.     
  18.   
  19. ENAME NVL(COMM,-1)   
  20.   
  21. ——————– ————   
  22.   
  23. SMITH -1  
  24.   
  25. ALLEN 300  
  26.   
  27. WARD 500  
  28.   
  29. JONES -1  
  30.   
  31. MARTIN 1400  
  32.   
  33. BLAKE -1  
  34.   
  35. FORD -1  
  36.   
  37. MILLER -1  
  38.   
  39. 其中显示-1的本来的值全部都是空值的   
  40.   
  41.     
  42.   
  43. 2 NVL2函数   
  44.   
  45. NVL2函数的格式如下:NVL2(expr1,expr2, expr3)   
  46.   
  47. 含义是:假如该函数的第一个参数为空那么显示第二个参数的值,假如第一个参数的值不为空,则显示第三个参数的值。   
  48.   
  49. SQL> select ename,NVL2(comm,-1,1) from emp;   
  50.   
  51.     
  52.   
  53. ENAME NVL2(COMM,-1,1)   
  54.   
  55. ——————– —————   
  56.   
  57. SMITH 1  
  58.   
  59. ALLEN -1  
  60.   
  61. WARD -1  
  62.   
  63. JONES 1  
  64.   
  65. MARTIN -1  
  66.   
  67. BLAKE 1  
  68.   
  69. CLARK 1  
  70.   
  71. SCOTT 1  
  72.   
  73. 上面的例子中。凡是结果是1的原来都不为空,而结果是-1的原来的值就是空。   
  74.   
  75.     
  76.   
  77. 3. NULLIF函数   
  78.   
  79. NULLIF(exp1,expr2)函数的作用是假如exp1和exp2相等则返回空(NULL),否则返回第一个值。   
  80.   
  81. 下面是一个例子。使用的是oracle中HR schema,假如HR处于锁定,请启用   
  82.   
  83. 这里的作用是显示出那些换过工作的人员原工作,现工作。   
  84.   
  85. SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”    
  86.   
  87. FROM employees e, job_history j   
  88.   
  89. WHERE e.employee_id = j.employee_id   
  90.   
  91. ORDER BY last_name;   
  92.   
  93.     
  94.   
  95. LAST_NAME JOB_ID JOB_ID Old Job ID   
  96.   
  97. ————————————————– ——————– ——————– ——————–   
  98.   
  99. De Haan AD_VP IT_PROG AD_VP   
  100.   
  101. Hartstein MK_MAN MK_REP MK_MAN   
  102.   
  103. Kaufling ST_MAN ST_CLERK ST_MAN   
  104.   
  105. Kochhar AD_VP AC_MGR AD_VP   
  106.   
  107. Kochhar AD_VP AC_ACCOUNT AD_VP   
  108.   
  109. Raphaely PU_MAN ST_CLERK PU_MAN   
  110.   
  111. Taylor SA_REP SA_MAN SA_REP   
  112.   
  113. Taylor SA_REP SA_REP   
  114.   
  115. Whalen AD_ASST AC_ACCOUNT AD_ASST   
  116.   
  117. Whalen AD_ASST AD_ASST   
  118.   
  119. 可以看到凡是employee。job_id和job_histroy.job_id相等的,都会在结果中输出NULL即为空,否则显示的是employee。job_id   
  120.   
  121. 4.Coalesce函数   
  122.   
  123. Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。   
  124.   
  125. 格式如下:   
  126.   
  127. Coalesce(expr1, expr2, expr3….. exprn)   
  128.   
  129. Coalesce是这样来处理这些参数的。假如第一个参数为空,则看第二个参数是否是空,否则则显示第一个参数,假如第二个参数是空再看第三个参数是否为空,否则显示第二个参数,依次类推。   
  130.   
  131. 这个函数实际上是NVL的循环使用  

你可能感兴趣的:(NVL,NVL2,NULLIF,COALESCE)