先介绍字符函数:
大小写相关:
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