Oracle通用函数

开发工具与关键技术:Oracle sql*plus  PLSQL

作者:王成

撰写时间:2019年4月2日

通用函数:

适用于任何数据类型,同时也适用于空值

NVL 函数:

(1)将空值转换成一个已知的值;

例:

1、查询员工的奖金率不为空或者不为0的数量(组函数忽略空值)

select count(commission_pct) from employees

输出结果:

2、查询员工的奖金率总的数量

select count(nvl(commission_pct,0)) from employees

输出结果:

3、查询员工的奖金率为空或者为0的数量

select count(nvl(commission_pct,0))-count(commission_pct) from employees

输出结果:

由以上可知,nvl可以把空值转换为非空的值,使组函数不忽略空值

 

(2)可以使用的数据类型有日期、字符、数字。

NVL2 函数:

例:1、查询员工的奖金率

输出结果:

2、查询员工的奖金率,若为空,返回0.01,若不为空,返回实际奖金率+0.01

select nvl2(commission_pct, commission_pct+0.01,0.01) from employees

输出结果:

 

NULLIF 函数:

例:1、查询员工的姓和名长度是否相等,相等返回null,不等返回姓的长度

select first_name,last_name,nullif(length(first_name),length(last_name)) from employees

输出结果:

 

COALESCE 函数:

(1)COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。

(2)如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。

 

CASE 表达式:

当需要使用IF-THEN-ELSE时,使用case表达式

例:查询部门号为 10, 20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 , 20 号部门, 则打印其工资的 1.2 , 30 号部门打印其工资的 1.3 倍数

select first_name, department_id, salary,

       case department_id

         when 10 then salary*1.1

           when 20 then salary*1.2

             when 30 then salary*1.3

       else salary

         end

 from employees where department_id in (10, 20, 30);

输出结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值