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. 恭喜发财! -- 手把手教你仿造一个qq下拉抢红包 Android自定义view

    猴年猴赛雷啊各位,今天没吃药我感觉自己萌萌哒! qq和微信和支付宝红包大战,不知道各位的战绩是多少嘞? 反正我qq抢到的都是气泡.因为太不爽,所以自己写一个下拉抢红包自己玩(自己跟自己玩). 先来看效 ...

  2. 【翻译】在Ext JS和Sencha Touch中创建自定义布局

    原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...

  3. crontab 任务程序执行乱码的问题

    今天碰到一个坑爹的问题,定时用php程序从远程的mssql读取数据,并写入到mysql中,手动用php执行程序的时候,程序运行没有问题,但当用crontab任务定时执行php程序的时候就出问题了,插入 ...

  4. Leetcode_49_Anagrams

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42744709 Given an array of stri ...

  5. g++和gcc的相同点和区别

    gcc和g++的区别和联系 gcc和g++都是GNU(一个组织)的编译器. 1.对于.c后缀的文件,gcc把它当做是C程序:g++当做是C++程序: 2.对于.cpp后缀的文件,gcc和g++都会当做 ...

  6. 价值5000元的web报表分享

    价值5000元的web报表分享 与一个朋友聊天,发现他最近做了一个很棒的报表,用他的话来讲,起码值5000RMB,我拿来与大家分享下,共同进步. 用朋友A的话,就是他最近接到公司财务部长大人的需求,需 ...

  7. 手把手教你从头开始搭建友善之臂ARM-tiny4412开发环境(史上最详细!!)

    创建一个ARM目录 mkdir   /disk/A9  -p 接下来你需要准备以下的东西 1.arm-linux-gcc-4.5.1     交叉编译器 2.linux-3.5-tiny4412    ...

  8. 利用可变参实现fprintf函数

    #include <stdio.h> #include <stdarg.h> /* 可变参相关接口 typedef char * va_list ; void va_start ...

  9. 近期Mac上编译geany软件的总结

    以前在Mac上装过port,后来改为brew.但是原来port装在/opt/local下的很多程序没删掉,path路径也没改,导致很多程序被重复安装,配置混乱.最后我痛下狠心用port uninsta ...

  10. Android studio 项目(Project)依赖(非Module)

    Android studio 项目(Project)依赖(非Module) 0. 前言 对于Module 级别的依赖大家都知道,今天说下Android Studio下的项目依赖. 场景: A Proj ...