您的位置:首页 > 数据库 > Oracle

oracle常用的函数总结

2013-11-13 13:43 483 查看
select dense_rank() over(order by salary desc) from employees

select row_number() over(partition by jobid order by salary desc) from employees

select sysdate from dual//求出当前日期

select to_date('2013-03-01','yyyy-MM-dd') from dual;

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

select to_char(sysdate,'yyyy') from dual;

select to_char(sysdate,'MM') from dual;

select to_char(sysdate,'dd') from dual;

小时,分,秒如上

select to_char(sysdate,'ddd') from dual;//当前日期是一年中第多少天

select to_char(sysdate,'w') from dual;//当前日期是当月第几周

select to_char(sysdate,'ww') from dual;//当前日期是一年中第几周

select upper('abc') from dual//大写转换

select lower('ABC') from dual//小写转换

select initcap('abc') from dual//首字母大写转换

select length('abc') from dual//字符串长度

select trunc(sysdate) from dual//返回整时间点

select ceil(5.6) from dual//返回大于5.6的最小整数

select floor(5.6) from dual//返回大写5.6的最大整数

select trunc(5.64543,2) from dual//保留两位有小数

select round(5.64532,2) from dual//保留两位小数,四射五入

select nvl(bonus,0) from dual;//bonus为空的时候返回零

select sign(100) from dual//返回正数的符号1

select sign(-100) from dual//返回负数的符号-1

select sign(0) from dual//返回零

select trim(' abc ') from dual//去除两端空白

select ltrim(' abc ') from dual//去除左端空白

select rtrim(' abc ') from dual//去除右端空白

select count(*)/count(1) from employees//会返回表中所有记录行数

select count(bonus) from employees//返回奖金不为空的记录行数(包括奖金重复的)

select count(distinct bonus) from employees//返回奖金不为空并且奖金不重复的记录数

oracle数据库9i添加的几个常用函数

select cast(extract(year from to_date('2013/09/12','yyyy/MM/dd')) as char(4))||'年'||

cast(extract(month from to_date('2013/09/12','yyyy/MM/dd')) as char(2))||'月'||

cast(extract(day from to_date('2013/09/12','yyyy/MM/dd')) as char(4))||'日出生的人的年龄是:'||

to_char(months_between(sysdate,to_date('2013/09/12','yyyy/MM/dd')),'99.9')||'岁' from dual

extract()截取指定的日期片段,cast实现类型转换

orace数据库对NULL处理函数

一:select nvl(exp1,exp2) from dual

(1)如果exp1,exp2属于同一种类型则如果exp1为null则返回exp2类型为exp2,类型无须转换

(2)如果exp1,exp2不是同一类型,若exp1为字符串,exp2先转化为字符串类型,exp1为null返回exp2的值,类型是字符串类型

(3)如果exp1,exp2都是数值类型则。double>float>number(优先级顺序) 谁的优先级高就返回谁的类型。值是exp2的值

二:select nvl2(exp1,exp2,exp3) from dual



select nvl2(null,1,'b') 类型无法自动转换报错。

三:nullif(exp1,exp2)

select nullif(1,1) from dual返回结果为null。如果exp1和exp2相等返回null否则返回exp1,

exp1和exp2类型必须相同,否则报错。

select nullif('ab',3) from dual报错

select nullif('ab',cast(3 as varchar2(1))) from dual返回null

select to_char(months_between(sysdate,to_date('2013/09/09','yyyy/MM/dd')) /12,'9990.99') from dual返回两个日期之间的月份在除以12算出年份

 


oracle特有的连接方式(左连接,右连接,内连接)

select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;(没有任何条件的即为内连接)

select t1.name,t2.name from
cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;(左连接)

select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+)(左连接的另外一种写法)

select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;(右连接)

select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id(右连接的一种写法);

常用的函数牢记。熟练运用



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle