zoukankan      html  css  js  c++  java
  • oracle的decode、sign、nvl,case...then函数

    ORACLE几种常用的方法

    1、decode 常见的用法 :

      格式:decode(condition,value1,result[, value2,result2], default_result)

      说明:decode相当于if条件判断函数,condition为表达式,相当于输入的值,当输入值为value1时,则对应的返回结果为result1;

           当输入值为value2时,则对应的返回结果为result2;如果未能与任何一个value匹配成功,则对应的返回结果为default_result;

      实例1:decode不同于其他的SQL函数,decode函数可以识别和操作空值。  

    SELECT name,DECODE(grade_level,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’)
    FROM emp;

      实例2: decode 也可以使用嵌套的方式来进行多个值得选择

               一个员工的出勤:可能会出现四种状态:公出,请假,出勤,休息。其中‘公出’是在‘请假’记录中包含的,“出勤”和“休息”是一个字段的两个状态。

    select name,decode(business_out , Y, "公出", decode(leave, Y,"请假" ,decode(attend,Y,“出勤”,N,“休息”)))
    from emp;

    2、sign 常见用法:

      格式:sign(n)

      说明:取数字n的符号,n大于0返回1,小于0返回-1,等于0返回0

      实例:

    select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;
    -- 返回结果:1 -1 0
    select sign(20-10) from dual;
    -- 返回结果:1

    3、nvl 常见用法

      格式:nvl(exp1,exp2)

      说明:如果oracle的第一个参数exp1为空,则显示第二个参数exp2的值,如果第一个参数不为空,则显示第一个参数本来的值

      实例:

    select name,NVL(comm, -1) comm from emp;
    -- 结果   其中显示-1的本来的值全部都是空值的
    name  comm
      
    SMITH   -1
    ALLEN   300
    WARD   500
    JONES   -1 

      用法:可以用它来判断一个字段是否为null,oracle判断某字段是否为null时,不可以使用‘=’,只能使用'IS NULL', 'IS NOT NULL',不可以是‘=NULL’, '!=NULL'

           NULL 值与任何其它值的比较(即使是 NULL)永远返回 false,即 NULL = NULL 返回false 。即‘where NULL=NULL’整个查询结果的结果集一定是空的。

    4、case…when…常见用法

      格式1(简单case函数):case sex 

                    when 'boy' then '男'

                    when 'gril' then '女'

                    else '未知' end

      格式2(搜索case函数)(常用,因为可以写判断是,不仅仅是‘=’):case when sex = 'boy' then '男'

                    when sex = 'gril' then '女'

                    else '未知' end 

      说明:这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。    

  • 相关阅读:
    JVM探秘1--JVM内存运行时区域划分
    skywalking学习之路---skywalking环境从零搭建部署
    ES6学习笔记之解构赋值
    ES6学习笔记之Symbol
    ES6学习笔记之块级作用域
    Vue开发警告[Vue warn]: Avoid replacing instance root $data. Use nested data properties instead.
    JavaScript实现归并排序
    Vue-cli3.x在开发环境中(router采用 history模式)出现Failed to resolve async component default: Error: Loading chunk {/d} failed.或者Uncaught SyntaxError: Unexpected token <错误
    vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)
    uni-app开发微信小程序引入UI组件库(Vant-weapp)步骤
  • 原文地址:https://www.cnblogs.com/xiaoneng/p/10531116.html
Copyright © 2011-2022 走看看