oracle的单行函数以及多行函数(聚合函数、分组函数)的使用

先介绍字符函数:
大小写相关:
1.

select lower('Hellow'), upper('heHHlo'), initcap('oello')
from dual;--dual空表!

结果:

hellow  HEHHLO  Oello

和大小写无关:
1.

SELECT trim('H' from 'HellowHH'), ltrim('HellowHH', 'H'),ltrim('HHellowHH', 'HH'), rtrim('HellowHH', 'H')
from dual;

注意trim 与 ltirm 和 rtrim用法有区别,函数的意思就是把‘H’删掉

ellow   ellowHH ellowHH Hellow

2.

select lpad(1000, 7, '*'), rpad(1000,7,'&')
from dual;

就是lpad(1000,7,’‘);就是把1000的左边用‘’来补齐。
结果:***1000 1000&&&

3.连接字符串:

select concat('Hello', ' world')
from dual;
Hello world

4.求子串

select substr('Hello worldlkasjdf', 3, 7)
from dual;
llo wor

5.查找字符串的位置

select instr('hellow laksd', 'l')
from dual;
3

6.replace替换字符串

select replace('hellow','h','mmm')
from dual;

结果:

mmmellow

数学函数:
round()四舍五入。

select round(123.456,2),round(123.456,-2),round(123.45,0),round(123.45)
from dual;

round(123.456,2),表示保留小数点后两位,若是-2的话,就是表示小数点前两位。

123.46  100 123 123

4.select trunc(1234.5678, 2)
from dual;

去除trunc()

1234.56

常见的日期函数:
1.可以直接在日期数据上加减数值,该数值表示日期前后的天数。
2.SYSDATE:获取当前的系统时间
3.MONTHS_BETWEEN:获取两个日期间的相差月数
4.ADD_MONTH:获取几个月后的日期
5.LAST_DAY:获取本月的左后一天的日期
6.EXTRACT:从本月中获取某一部分的值

1.sysdate()

select sysdate + 2
from dual;

今天2015年10月18号

20-10月-15

2.add_months()

select add_months(sysdate, 4)
from dual;
18-2月 -16

3.trunc 和 months_between的联合使用

select ename, trunc(months_between(sysdate, hiredate))
from emp;

结果;

SMITH   418
ALLEN   415
WARD    415
JONES   414
MARTIN  408

5.extract()取出日期中的数据

select extract(year from sysdate),extract(month from sysdate),extract(day from sysdate)
from dual;

结果:

2015    10  18

其他函数:
case 关键字:

select ename, deptno,sal,
       case
       when deptno=10 then sal + 100
       when deptno=20 then sal + 200
       when deptno=30 then sal + 300
       ELSE sal end salary
from emp;

结果为:

SMITH   20  800 1000
ALLEN   30  1600    1900
WARD    30  1250    1550
JONES   20  2975    3175
MARTIN  30  1250    1550
BLAKE   30  2850    3150
CLARK   10  2450    2550
SCOTT   20  3000    3200
KING    10  5000    5100
TURNER  30  1500    1800
ADAMS   20  1100    1300
JAMES   30  950 1250
FORD    20  3000    3200

空值转换函数:
nal:(“no value?”)

select ename , deptno, comm, nvl(comm,0)
from emp;

nvl(null,0);这里要求 两列的数值是相同的,因为此处comm是数值型,所以0是可以的,若是转换成字符串’0‘,那么第一个参数,就to_char(comm)了

SMITH   20      0
ALLEN   30  300 300
WARD    30  500 500
JONES   20      0
MARTIN  30  1400    1400
BLAKE   30      0
CLARK   10      0
SCOTT   20      0
KING    10      0
TURNER  30  0   0
ADAMS   20      0
JAMES   30      0
FORD    20      0
MILLER  10      0
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值