zoukankan      html  css  js  c++  java
  • oracle>functions

    --函数  founations()

    SQL> select ename,empjob,sal 涨前薪水, decode(empjob,'PRESIDENT',sal+1000,
      2                                               'MANAGER',sal+800,
      3                                                      sal+400) 涨后薪水
      4  from emp;

       select ename,empjob,sal 涨前薪水, case empjob when 'PRESIDENT' then sal+1000
      2                                          when 'MANAGER' then sal+800
      3                                          else sal+400
      4                                  end 涨后薪水
      5* from emp

    SQL> --COALESCE  从左至右 依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL。
    SQL> select comm,sal,COALESCE(comm,sal) from emp;

          COMM        SAL COALESCE(COMM,SAL)                                       
    ---------- ---------- ------------------                                        
                         800                800                                       
           300       1600                300

    NULL指的是空值,或者非法值。
    
    NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
    NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
    NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1
    */

    SQL> --nvl2(a,b,c) :当a=null时,返回c,否则返回b    虑空 函数                                      
    SQL> select sal*12+nvl2(comm,comm,0)
      2  from emp;

    SAL*12+NVL2(COMM,COMM,0)                                                       
    ------------------------                                                       
                        9600

    SQL> --nullif(a,b) 当a=b时,返回null,否则返回a
    SQL> select nullif('abcd','abcd')                                      --'  '  代表字符串   "   " 代表列
      2  from dual;

    NULL                                                                           
    ----

    SQL> --nvl2(a,b,c) :当a=null时,返回c,否则返回b
    SQL> select sal*12+nvl2(comm,comm,0)
      2  from emp;

    SAL*12+NVL2(COMM,COMM,0)                                                       
    ------------------------                                                       
                        9600

    组函数会自动滤空      高
    select count(*),count(nvl(comm,0))  from emp    
    SQL> /

      COUNT(*) COUNT(NVL(COMM,0))                                                                                                                        
    ---------- ------------------                                                                                                                        
            14                 14

     

    SQL> --instr: 在母串中,查找子串,如果找到返回下标,否则返回0   
    SQL> select instr('Hello World','ll') from dual;

    INSTR('HELLOWORLD','LL')                                                       
    ------------------------                                                       
                           3

    ROUND(数字,保留的小数点数)
     select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三,
             ROUND(45.926, -1) 四, ROUND(45.926, -2) 五,ROUND(45.926, -3)
      from dual;

            一         二         三         四         五         六                         
    ---------- ---------- ---------- ---------- ---------- ----------                         
         45.93       45.9         46         50          0          0                                                                                              

     

    用to_char函数,可以把一个日期转为一个字符串,并且能制定格式   和dataformat有异曲同工之妙
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    TO_CHAR(SYSDATE,'YY                                                            
    -------------------                                                            
    2013-01-22 14:33:54

    使用当前用户该  global表示全局的 session表示当前会话    这样才不会因为格式错误,而查不到
    SQL> alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
    会话已更改。

    select * from emp  where hiredate='1981-11-17';

                                                                                          SQL> select

    (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天  
      2  from dual;

    昨天           今天           明天                                             
    -------------- -------------- --------------                                   
    21-1月 -13     22-1月 -13     23-1月 -13

    SQL> --员工的工龄      得到的是个近似值
    SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,
      2                        (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年
      3  from emp;

  • 相关阅读:
    c# 通过Windows服务启动外部程序
    MVC 视图页对数字,金额 用逗号 隔开(数字格式化)
    mvc4 @foreach 如何写@if 判断
    最小生成树Prim算法和Kruskal算法
    Triangle War
    定制kickstart重建CentOS7.5镜像用于U盘引导安装
    有限状态机FSM
    最短路经算法简介(Dijkstra算法,A*算法,D*算法)
    利用/dev/urandom文件创建随机数
    A*搜索算法
  • 原文地址:https://www.cnblogs.com/nauy/p/2879335.html
Copyright © 2011-2022 走看看