Oracle学习笔记(二)
单行函数字符串函数将所有的姓名转换成小写 select LOWER(ename) from emp;
将所有的雇员姓名以首字母大写的形式保存 select ename,INITCAP(ename) from emp;
查询雇员姓名长度为5的全部雇员信息 select * from emp where LENGTH(ename)=5;
查询雇员姓名长度为5的全部雇员信息 select * from emp where LENGTH(ename)=5;
在JAVA程序中,字符串首字母的索引是0,但是在ORACLE里面,所有的字符串的首字母的索引都是1。如果设置了0,也是按照1的方式来处理。 select ename,SUBSTR(ename,1,3) from emp;
要求截取每个雇员姓名的后三个字母 select ename,LENGTH(ename)-3+1) from emp;
select ename,-3) from emp;
数值函数ROUND()函数,四舍五入 select ROUND(789.567) from dual; //790
select ROUND(789.567,2) from dual; //789.57
select ROUND(789.567,-2) from dual; //800
TRUNC()函数,不会进位 select TRUNC(789.567),TRUNC(789.567,2),-2) from dual;//789,789.56,700
求模函数 select MOD(10,3) from dual;//1
日期函数SYSDATE SYSTIMESTAMP两个伪列。 select empno,ename,job,SYSDATE-hiredate from emp;
如果直接使用天数来实现年或月的计算,是不准确的。ORACLE提供了四个日期处理函数 在当前日期下增加指定月份(4个月) select ADD_MONTHS(SYSDATE,4) from dual;
计算每个雇员已经被雇佣的月数 select empno,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate) from emp;
在当前时间所在月份的最后一天 select LAST_DAY(SYSDATE) from dual;
要求查询出所有在雇佣所在月倒数第三天雇佣的雇员信息 select * from emp where hiredate=LAST_DAY(hiredate)-2;
查询出下一个星期三 select next_day(SYSDATE,'星期三') from dual;
以年、月、日的方式计算出每个雇员到现在为止雇佣年限。 select empno,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) month,TRUNC(SYSDATE-ADD_MONTHS(hiredate,hiredate))) day from emp;
转换函数函数名称 |
描述 |
| 函数名称 | 描述 | NVL() 如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理 DECODE() 设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认内容输出
---|