zoukankan      html  css  js  c++  java
  • oracle单行函数(字符函数、)、组函数

    1、单行函数:

    (1)字符函数:

    --------------转小写lower:

    --------------转大写upper:

    --------------首字母大写initcap:

    select lower('hellO WORld') ,upper('hellO WORld') ,initcap('hello world') 
     from dual;

    --------------------------substr(a,b) 从a中,第b位开始取,取右边所有的字符

    select substr ('hello world',4) from dual;

     ----------------------------substr(a,b,c) 从a中,第b位开始取,取c位

     select substr ('hello world',4,3) from dual;

     

    ---------------------------length 字符数 lengthb 字节数

    select length('Hello World') , lengthb('Hello World') from dual;

     

    ------------------------instr 在母串中查找子串,找到返回下标(从1开始),否则返回0
     select instr('Hello World','ll') from dual;

     ---------------------------lpad 左填充  rpad 右填充

     select lpad('abcd',10,'*') ,rpad('abcd',10,'*')  from dual;

     

    -------------------------trim 去掉前后指定的字符

     select trim('H' from 'Hello WorldH') from dual;

     

     --------------replace 替换

    (2)数字函数

     -----------------round和trunc  取小数位

     

    ----------------------日期函数sysdate

     

    改变日期函数输出的格式:

    select  to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    select systimestamp from dual;                         systimestamp时间戳

    select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') from dual;                              systimestamp时间戳

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

    员工的工龄

    select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年from emp;

    这个月最后一天:

     计算工龄: months_between

     

     114个月后:

    select add_months(sysdate,114) from dual;

    --从今天开始算(2012.10.22星期一),下一个星期一
     select next_day(sysdate,'星期一') from dual;

     --从今天开始算(2012.10.22星期一),下一个星期二
     select next_day(sysdate,'星期二') from dual;

    显式转换

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;

     

    查询员工的薪水: 货币符号,两位小数,千位符

     

    通用函数
     --nvl2(a,b,c) 当a=null时,返回c,否则返回b
     select sal*12+nvl2(comm,comm,0) from emp;

     

     --nullif(a,b) 当a=b时,返回null,否则返回a

     

     -----------------------COALESCE 从左至右找到第一个不为null的值

    select comm,sal,COALESCE(comm,sal) from emp; 

     

    根据职位涨工资 总裁1000 经理800 其他400

    select ename,job,sal 涨前薪水, case job when 'PRESIDENT' then sal+1000
     when 'MANAGER' then sal+800
     else sal+400
     end 涨后薪水

    from emp;

    select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000,select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000,'MANAGER', sal+800,sal+400)涨后薪

     from emp

    2、组函数

     sumcountavg

     查询平均工资大于2000的部门

    select deptno,avg(sal)
     from emp
     group by deptno
     having avg(sal)>2000

     /

     having 过滤分组

    having和where的区别
     --求10号部门的平均工资
     select deptno,avg(sal)
     from emp
     group by deptno
     having deptno=10;

     

  • 相关阅读:
    Jetson AGX Xavier配置使用OpenCV(报错:No package 'opencv' found)
    centos7 lnmp
    php用户签到,领取红包
    php红包功能
    Mysql 主从复制
    mysql 小技巧
    区块链学习笔记一
    PHP 常用自定义函数
    centos7.4 搭建lnmp
    什么是跨域?怎么解决跨域问题?
  • 原文地址:https://www.cnblogs.com/yang1182/p/9592786.html
Copyright © 2011-2022 走看看