oracle 函数

字符函数

 

 

Initcap(char)

 

 

--首字母大写
select initcap('nihao') from dual

 

Lower(char)

--转小写
select  empno,lower(ename),lower(job) from emp

Upper(char)

--转大写
select upper('nihao') from dual

Ltrim(char,set):从左边开始 只要包换syz的 或者只包含单独的x,y,z的都去除掉(必须得在开头的)

--ltrim(从左边开始 )
select ltrim('xadyminyxz','xyz') from dual;

运行后:

 

 

 Rtrim(char,set) :从右边开始 只要包含syz的 或者只包含单独的x,y,z的都去除掉(必须得在开头的)

--rtrim(从右边开始 )
select rtrim('xadyminyxz','xyz') from dual;

运行后:

 

 

 Translate(char, from, to):吧第一个字符串j 替换成了b

Select translate(‘jack’,’j’ ,’b’) from dual; 

运行后:

 

 

 Replace(char, searchstring,rep string):吧所有的j都换成了bl

Select replace(‘jack and jue’ ,’j’,’bl’) from dual;

运行后:

 

 

 Instr (s1, s2 [,i ,j]:求j在i里是第几位字符串(这里从0开始)

Select instr (‘worldwide’,’d’) from dual;

运行后:

 

 

 Substr (s, m, n) :从m开始 截取n个数值(从1开始)

Select substr(‘abcdefg’,3,2) from dual;

运行后:

 

 

 最后一个是链接字符串

 

DECODE:逐个值替换

select ename,decode(deptno,'10','运维部''20''开发部','30', '产品部')as deptno from emp

运行后:

 

 

 数学函数:

 

 

 abs:求绝对值

ceil:向上取整

cos:在数学中,COS称为(余弦函数),即余弦(三角函数的一种)。

Floor:向下取整

power:取次幂(例如4的2次方 就是16)

Mod:取余数(10÷3余1)

Round:四舍五入

Trunc:就是保留两位小数 没有四舍五入

Sqrt:平方根

日期函数:

 

 

 

 

 

 

--截取当前系统日期年份
select extract(year from sysdate) from dual
select extract(month from sysdate) from dual
select extract(day from sysdate) from dual

练习:

--获取emp表中每个人的工作年份
select ename,extract(year from sysdate)- extract(year from hiredate)as eate from emp

转换函数:

 

 

 

--吧数值类型变成字符串
Select TO_CHAR(123,'$9999') FROM DUAL;
--吧日期类型转成字符串

SELECT TO_CHAR(hiredate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS') FROM emp;

运行后·:

 

 

 

 其他函数:

 

 如果这个表里的comm是空的话 就拿o去加 不然 null加任何值 都等于null 

--求每个员工的总工资(空值转换函数)

select ename,sal+nvl(comm,0) as ac from emp 

--如果为空的话 就取零 如果不为空就统一按照一千算
select ename,sal+nvl2(comm,1000,0) as ac from emp

nullif:

--如果左右两边的值相等 那么他的结果就是空 如果不为空 就默认取第一个值
select nullif(100,400) from dual

 

 分析函数(排名函数):

 

 一般大部分情况都使用第三种方法:

--分析函数(排名函数)
--没有并列
select EMP.*,ROW_NUMBER() over(order  by sal desc) as enum from emp
--有并列 但是没第三了 实际展位的
select EMP.*,rank() over(order  by sal desc) as enum from emp
--有并列 并且不会被站位 正常排名
select EMP.*,DENSE_RANK() over(order  by sal desc) as enum from emp

 

posted @ 2020-03-25 14:04  邢昊天  阅读(219)  评论(0)    收藏  举报