字符的大小写转换
Lower upper
每个单词的首字母大写
Initcap
字符串连接函数
Concat(x,y)
子串
Substr
字符数 字节数
Length lengthb
在母串中返回子串的位置
Instr
左填充 右填充
Lpad rpad
从母串中,去掉首尾的某个字符
Trim
select trim('a'from 'abcde') from dual;
四舍五入 round 截断 trunc 求余 mod
对日期直接操作 表示 前天 今天 明天
select (sysdate-1)前天,sysdate,(sysdate+1)后天 from dual;
查询员工到公司的时间长短,分别按星期,月,年显示
select ename,hiredate,(sysdate-hiredate)/7 星期,(sysdate-hiredate)/30 月,(sysdate-hiredate)/365 from emp;
select months_between(sysdate,hiredate) 月 from emp;
select sysdate 当前日期, add_months(sysdate,1)
select next_day(sysdate,'星期六') from dual;
select last_day(sysdate) from dual;
对日期进行四舍五入和截断
select round(sysdate,'month'),round(sysdate,'year') from dual;
转换
查询员工的工资,要求工资以货币代码的格式显示
select ename,sal,to_char(sal,'L9999') from emp;
显示千位符
select ename,sal,to_char(sal,'L9,999') from emp;
select to_date('2011-06-11','yyyy-mm-dd') from dual;
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
select ename,sal,sal*12 年薪, sal*12+nvl(comm,0)
nvl2(p1,p2,p3):当p1为null,返回p3;否则返回p2
select ename,sal,sal*12, sal*12+nvl2(comm,comm,0) 年收入
select nullif('abc','abc') from dual;
>>null
select nullif('abc','abc1') from dual;
>>abc
select coalesce(comm,sal) from emp;
为员工涨工资,一般职员涨100,销售200,经理300 分析员 400 总裁500
select ename,job,sal 当前薪水, case job when 'CLERK' then sal+100
2 when 'SALESMAN' then sal+200
3 when 'MANAGER' then sal+300
4 when 'ANALYST' then sal+400
5 when 'PRESIDENT' then sal+500
6 end 涨后的薪水
7 from emp;
select ename,job,sal 当前薪水, decode ( job,'CLERK',sal+100,
2 'SALESMAN',sal+200,
3 'MANAGER',sal+300,
4 'ANALYST',sal+400,
5 sal+500) 涨后薪水
6 from emp;