代码改变世界

Oracle函数汇总

2017-01-08 12:11  稀里糊涂丶  阅读(256)  评论(0编辑  收藏  举报

日期函数

1.  select sysdate from dual

查询当前日期

2.  select months_between() from dual

查询两个日期的月份差

3.  select add_months(sysdate,1) from dual

给某个日期增加一个月

4.   select round(1.554,1) from dual

四舍五入(具体参数,小数点后几位小数)

 

数字函数

1.  select abs(-3) from dual

取绝对值

2.  select sqrt(9) from dual

开平方根

 

字符函数

1.  select Initap('abc') from dual

首字母大写

2.  select substr('欢迎大家来到北大青鸟学习',1,2) from dual

结果:欢迎

ps:从1开始,截取2个长度 Orcl

3.  select instr('CORPORATE FLOOR','OR',3,2) from dual;

ps:从第3位查起(可为负),查第几个‘OR’的位置(超出索引为0,第几个若负报错)

 

转换函数

1.   select to_date('1991-10-31','yyyy-mm-dd hh24:mi:ss') from dual

string转为date

2.  select to_char(1.234,'$9999.9') from dual  转数字str   

结果:$1.2

9  数字

0  零

$  美元符号

L 本地货币符号

.   小数点

,  千位符

  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual  转日期str

3.  select to_number('1.23')+2 from dual

结果:3.32  显式转换

  select '1.23'+2 from dual

结果:3.32  隐式转换

  select '1.23'||2 from dual

结果:1.232  orcl中连接专用||  加法专用+

  select '1.23'+'2' from dual

结果:3.32   真·隐式转换  sql server结果:1.232 连接的意思

 

通用函数(nvl,nvl2滤空函数)

1.  select sal*12 工资, comm 奖金,sal*12+nvl(comm,0) from emp

ps:如果1为null,替换为2

  原句:select sal*12 工资,comm 奖金, sal*12+comm from emp

nvl的意义就是 null + - * / 任意数 = null

tip:题意为统计年终薪资,不能因为奖金null,收益也为null,所以需要滤空

2.  select sal*12 工资,comm 资金, sal*12+nvl2(comm,comm,0) from emp;

ps:1为空,替换为3.不为空,替换为2.必替

 

decode函数

select nid, decode(tid,1,'a',2,'b',3,'c',4,'d','Non E') 编号 from student

tip:类似sql  server的 case when then end