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(右连接的一种写法);
常用的函数牢记。熟练运用
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(右连接的一种写法);
常用的函数牢记。熟练运用
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle 10g R2不能使用EM的问题
- PreparedStatement中in子句的处理
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- 数据库自动备份脚本
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解
- Oracle Connect to Idle Instance解决方法
- oracle sys_connect_by_path 函数 结果集连接
- Oracle捕获问题SQL解决CPU过渡消耗
- oracle dba 应该熟悉的命令
- Oracle11.2 命令行手工最简创建数据库的过程
- Oracle 数据库自动存储管理-安装配置
- 基于oracle中锁的深入理解
- Oracle 数据库 临时数据的处理方法