Oracle 通用函数 
① 
NVL 函数--------将空值转换成一个已知的值:

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

函数的一般形式:  
  NVL(commission_pct,0)           
  NVL(hire_date,'01-JAN-97')

  NVL(job_id,'No Job Yet')

(注意select 原数据类型是number  对返回值要求也是number  其他同理)?

求年薪

select employee_id,
nvl(commission_pct,0) ,
   salary*12 ,
salary*12*(1+nvl(commission_pct,0)) as "annual salary"--------------(commission_pct 有的没有)   from employees

练习2:输出last_name,department_id,当department_id为null时,显示‘没有部门’。-----------当时没思路 

select employee_id
,nvl(to_char(department_id),'没有部门') ----------------------------后面没法转 转前面
from employees

 

2. 使用 NVL2 函数 
格式:NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3。

练习:查询员工的奖金率,若为空,返回0.01,若不为空,返回实际奖金率+0.015

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

3. 使用 NULLIF 函数 
 
NULLIF (expr1, expr2) :  相等返回NULL,不等返回expr1  
 
练习 当 first_name长度等于last_name长度 返回null 否则返回 first_name

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

4. 使用 COALESCE 函数

更具有一般性   coalesce()的参数是可变参数。 参数要求2个以上都行。。

样式: 
①coalese(参数1,参数2)  ---------------当第一个参数为为null的时候  判断第二参数  若第二个也为空 返回空 
②coalese(参数1,参数2,参数3) ---------------第一个为空判断第二个,第二个为空判断第三个,第三个为空返回null

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

如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE  
 
练习 判断commission_pct 是否为null

  ①否 commission_pct

  ②是  判断salary是否为null

     ①否  就打印工资

     ②是  就打印 10

 select   first_name ,
commission_pct ,
salary,
coalesce(commission_pct,salary,100)
from employees
  order by commission_pct

oracle通用函数,nvl,nvl2,NULLIF ,coalesce的更多相关文章

  1. oracle几个函数整理 DECODE() NVL NVL2 NULLIF Coalesce(转)

    DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值 ...

  2. oracle NVL,NVL2,NULLIF,COALESCE

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  3. NVL函数(NVL,NVL2,NULLIF,COALESCE)

    NVL 语法:NVL( expr1, expr2) 功能:如果expr1为NULL,则NVL函数返回expr2的值,否则返回expr1的值,如果两个参数的都为NULL ,则返回NULL. 注意事项:e ...

  4. 函数nvl,nvl2,nullif,coalesce

    NVL: Converts a null value to an actual valueNVL2:If expr1 is not null, NVL2 returns expr2. If expr1 ...

  5. oracle函数nvl, nvl2, nullif

    nvl函数 语法: NVL(表达式1, 表达式2) select nvl(s.name, '未填写') from student s 如果表达式1的值为空, 则显示第二个值, 否则显示原来的值, nv ...

  6. oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO

    干oracle 047文章12当问题,经验group by 声明.因此邂逅group by  rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPOR ...

  7. oracle函数nvl,nvl2的区别,nullif函数,coalesce函数

    在oracle中用nvl和nvl2函数来解决为空的情况,例如,如果奖金为空,则为它指定一个数.也就是nvl(奖金字段,指定的奖金),但是两个的类型要一致. 1)nvl()函数 SQL> sele ...

  8. oracle之nvl,nvl2,decode

    oracle sql常用查询nvl,nvl2,decode区别及使用方法 1,NVL( E1, E2) 如果E1为NULL,则NVL函数返回E2的值,否则返回E1的值,如果两个参数都为NULL ,则返 ...

  9. SQL Fundamentals || Single-Row Functions || 通用函数 General function || (NVL,NVL2,NULLIF,DECODE,CASE,COALESCE)

    SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使用单 ...

随机推荐

  1. 如何设计一个web容器

    开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探 ...

  2. Java序列化Serializable和Externalizable

    纸上得来终觉浅,绝知此事要躬行  --陆游       问渠那得清如许,为有源头活水来  --朱熹 什么是Java序列化?为什么出现Java序列化?怎样实现Java序列化? 一.什么是Java序列化 ...

  3. 《java入门第一季》之面向对象多态面试题(多态收尾)

    /* 看程序写结果:先判断有没有问题,如果没有,写出结果 */ class A { public void show() { show2(); } public void show2() { Syst ...

  4. Graph Cut and Its Application in Computer Vision

    Graph Cut and Its Application in Computer Vision 原文出处: http://lincccc.blogspot.tw/2011/04/graph-cut- ...

  5. C# Oracle数据库操作类实例详解

    本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长 ...

  6. Linux下MySQL备份以及crontab定时备份

    1. 备份某个数据库 ################################################################## # 备份某个数据库 ############ ...

  7. Android Bootloader LittleKernel的两篇文章

    Android 开发之 ---- bootloader (LK) LK是什么 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程 ...

  8. 认识Zygote

    概述 在java中不同的虚拟机实例会为不同的应用分配不同内存,为了使Android系统尽快启动,使用了Zygote来预加载核心类库和一些加载时间长的类(超过1250ms),让Dalvik虚拟机共享代码 ...

  9. C语言在linux内核中do while(0)妙用之法

    为什么说do while(0) 妙?因为它的确就是妙,而且在linux内核中实现是相当的妙,我们来看看内核中的相关代码: #define db_error(fmt, ...) \ do { \ fpr ...

  10. rails小重构:将图片加入产品Model

    原先的产品product模式中存放的是图片的url,必须手动将图片存入指定目录中.现在略作改动,在数据库中新建一个pictures表,其设定如下: class CreatePictures < ...