Chinaunix首页 | 论坛 | 博客
  • 博客访问: 119912
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-22 14:58
个人简介

坚持,做最好的自己

文章分类

全部博文(24)

文章存档

2015年(2)

2014年(9)

2013年(13)

我的朋友

分类: Oracle

2014-04-04 15:37:03

  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. 含义是:假如该函数的第一个参数为空那么显示expr3参数的值,假如第一个参数的值不为空,则显示expr2参数的值。  
  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的循环使用
阅读(2151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~