• Oracle单组函数


    --Upper  -------把字符转换成大写

          SELECT Upper ('abcde') FROM dual ; 

    --Lower   ----- 把字符转换成小写
          SELECT lower('ABCDE') FROM dual ; 
     
    --Initcap  -----返回所有单词的首字母大写,其他字母小写
           Select initcap(ename) from emp; 
     
    --Concat   -----字符串连接 ,相当于||
           Select concat('a','b')  from dual; 
            Select 'a' || 'b' from dual;


    --Substr -------查找字符串
           Select substr('abcde',length('abcde')-2) from dual; 
           Select substr('abcde',-3,3) from dual;

       

           substr(string,position,substring_length)

          1、如果position=0,  则被当做1

          2、如果position>1,    则从position位置开始找

          3、如果position<1,    则从结尾开始找

          4、如果第三个位置没有指定,则从指定位置到结尾


    --Length ------字符串的长度
           Select length(dname) from dept;

     
    --Replace -----字符串替换 
           Select replace(ename,'a','A') from emp;


    --Instr -- -----字符串查找,返回索引值
           Select instr('Hello World','or') from dual; --8 indexof


    --Lpad   ------左侧填充
           select lpad('Smith',10,'*') from dual--左侧填充  *****Smith


    --Rpad   ------右侧填充
           select rpad('Smith',10,'*') from dual--右侧填充  Smith*****


    --Trim   -------过滤首位空格 
           select trim('    Mr Smith          ') from dual --过滤首尾空格   Mr Smith


    --数值函数

    --Round   -----四舍五入,取精度
           select round(462,-2) from dual;      ------负数往小数点前数    ----500
           select round(412.313,2) from dual; -----正数往小数点后数     ----412.13


     --Trunc   -----不四舍五入,直接取最大值
           select trunc(462.13,-2) from dual;                                      ----400

    --日期函数 
    --Months_between()   -----两个时间之间隔了多少个月
           select months_between(sysdate,hiredate) from emp;


    --Add_months()          ------在某个时间点上加一个月
            select add_months(sysdate,1) from dual;

    --Next_day() 
            select next_day(sysdate,'星期一') from dual; ----返回下一个星期一的日期


    --Last_day 
            select last_day(sysdate) from dual;             ----返回这个月的最后一天

    --转换函数 

    --To_char 
            select to_char(sysdate,'yyyy') from dual;            ---2011
             select to_char(sysdate,'yyyy-mm-dd') from dual; ----2011-07-16
             select to_char(sal,'L999,999,999') from emp;       ----
             select to_char(sysdate,'D') from dual; --返回星期  ----7


    --To_number 
              select to_number('13')+to_number('14') from dual;    ------27      

      
    --To_date 
              Select to_date('2009-02-10','yyyy-MM-dd') from dual;  ----2009/2/10

             select to_char('001') from dual;                                     ----001
             select to_number('003')from dual;                                -----3


    --通用函数 
    --NVL()函数    -----有值返回本身,无值返回0

            select nvl(comm,0) from emp;


    --NULLIF()函数  ----如果表达式 exp1 与exp2 的值相等则返回 null,否则返回 exp1 的值

             nullif(exp1,exp2)

     
    --NVL2()函数    
          select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;   ----如果comm不为null,返回sal+comm,否则返回comm


    --COALESCE()函数 --依次考察各参数表达式,遇到非null值即停止并返 回该值。

          select empno, ename, sal, comm, coalesce(sal+comm, sal, 0)总收入  from emp;

    --CASE表达式 
          select empno, ename, sal, 
               case deptno   
                    when 10 then '财务部' 
                    when 20 then '研发部' 
                    when 30 then '销售部' 
                    else '未知部门'       
              end 部门 
          from emp;

    --DECODE()函数 --和 case表达式类似,decode()函数也用于实现多路分支结构 
     
           select empno, ename, sal, 
                decode(deptno, 10, '财务部', 
                                          20, '研发部', 
                                          30, '销售部', 
                                         '未知部门')       
                               部门 
           from emp; 
     
     

     case在SQL中有两种写法,先建立一个表
             create table salgrade(grade int, sal int);

             insert into salgrade values(1,1000);
             insert into salgrade values(2,2000);
             insert into salgrade values(3,3000);

    第一种写法,简单写法:
             select grade,sal,
                 case grade
                    when 1 then 'low'
                    when 2 then 'middle'
                    else 'high'
                end
             from salgrade;

    第二种写法,查找写法:
             SELECT grade,sal,
                  case when sal <=1000 then 'low'
                      when sal <=2000 then 'middle'
                      else 'high'
                 end
             FROM salgrade;

    decode只能代替第一种写法:
              select grade,sal,decode(grade,1,'low',2,'middle','high') from salgrade;

    --单行函数嵌套 
              select empno, lpad(initcap(trim(ename)),10,' ')    name, job, sal from emp;

  • 相关阅读:
    求阶乘及其和
    JAVA 字符串题目 以静态方法实现encode()和decode()的调用
    JAVA 类与对象题目5
    JAVA 类与对象题目4
    JAVA 类与对象题目3
    JAVA 类与对象题目2
    JAVA 基础练习题代码
    JAVA 关于值类型和引用类型的区别
    JAVA学习 判断一个字符或字符是否位于另一个字符串的末尾
    JAVA 截取4个随机数字字母的代码
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/5009722.html
Copyright © 2020-2023  润新知