日期函数
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