单行函数(7)

DECODE() 函数是 Oracle 中最有特色的一个函数,DECODE() 函数类似于程序中的 if...else if...else ,但是判断的内容都是一个具体的值,语法如下:

DECODE(列|表达式, 值1, 输出结果, 值2, 输出结果, ..., 默认值)

范例:测试DECODE() 函数

SELECT DECODE(2,1,'内容为一',2,'内容为二'), DECODE(2,1,'内容为一','没有条件满足') FROM dual;

范例:现在雇员表中的工作有以下几种:CLERK:业务员, SALESMAN:销售人员, MANAGER:经理, ANALYST:分析员, PRESIDENT:总裁 ,要求查询雇员的姓名、职位、基本工资等信息,但是要求将所有的职位信息都替换为中文显示。

SELECT ename,sal, DECODE(job, 'CLERK','业务员', 'SALESMAN','销售人员', 'MANAGER','经理', 'ANALYST','分析员', 'PRESIDENT','总裁') job FROM emp;

但是需要注意的是,如果使用 DECODE() 函数判断,那么所有的内容都要判断,如果只判断部分内容,其它内容就会显示 null

6.6.5 CASE 表达式

CASE 表达式是在 Oracle 9i 引入的,功能与DECODE() 有些类似,都是执行多条件判断。不过严格来讲,CASE表达式本身并不属于一种函数的范畴,它的主要功能是针对于给定的列或者字段进行依次判断,在 WHERE 中编写判断语句,而在 THEN 中编写处理语句,最后如果都不满足则使用 ELSE 进行处理。

范例:显示每个雇员的工资、姓名、职位,同时显示新的工资(新的工资标准:办事员增长10%,销售人员增长20%,经理增长30%,其他职位的人增长50%)

SELECT ename,sal, CASE job WHEN 'CLERK' THEN sal * 1.1 WHEN 'SALESMAN' THEN sal * 1.2 WHEN 'MANAGER' THEN sal * 1.3 ELSE sal * 1.5 END 新工资 FROM emp; 6.6.6 COALESCE() 函数

COALESCE(表达式1, 表达式2, 表达式3,...表达式n) 函数的主要功能是对 null 进行操作,采用依次判断表达式的方式完成,如果表达式1为 null,则显示表达式2的内容,如果表达式2的内容为 null,则显示表达式3的内容,依次类推,判断到最后如果还是null,则最终的显示结果就是 null 。

范例:验证 COALESCE() 函数

SELECT ename,sal,comm,COALESCE(comm,100,2000), COALESCE(comm,null,null) FROM emp;

小结:

这些通用函数都具备一些逻辑性的操作在里面,在以后进行程序编写时还是会使用到的。

NVL() 和 DECODE() 是通用函数的基础,其他函数都在此函数之上进行功能扩充。

说明:本学习资料是根据李兴华的Oracle开发实战经典整理

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4660a92bd9f744bd670d3268e8dfdc88.html