Oracle学习笔记(二)

前端之家收集整理的这篇文章主要介绍了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;

转换函数

函数名称 描述
TO_CHAR() 将日期或数字格式化为指定结构的字符串
TO_DATE() 按照指定的转换格式编写字符串后将其变为日期型数据
TO_NUMBER() 将字符串变为数字

TO_CHAR的转换格式:
- 日期:年(yyyy)、月(mm)、日(dd)
- 时间:时(hh、hh24)、分(mi)、秒(ss)
- 数字:任意数字(9)、本地货币符号(L)

将日期显示格式化

select to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss') from dual;

实现日期数据的拆分

select to_char(SYSDATE,'yyyy'),to_char(SYSDATE,'mm'),'dd') from dual;

要求查询出2月份雇佣的雇员

select * from emp where to_char(hiredate,'mm')='02';
select * from emp where to_char(hiredate,'mm')=2;
//ORACLE之中提供自动转型

拆分数字

select TO_CHAR(894651651,'L999,999,999') from dual;

将字符串变为日期

select TO_DATE('1993-03-23','yyyy-mm-dd') from dual;

将字符串变为数字,没有用。ORACLE提供了自动转换机制。

select TO_NUMBER('1') + TO_NUMBER('2') from dual;

通用函数

函数名称 描述
NVL() 如果传入的内容是null,则使用默认数值处理,如果不是空则使用原始数值处理
DECODE() 设置的内容会与每一个比较内容进行比较,如果内容相同,则会使用显示内容进行输出,如果都不相同,则使用最后的默认内容输出

处理null函数
查询每个雇员的编号、姓名、基本工资、佣金、年薪

select empno,sal,comm,(sal+comm)*12 from emp;

由于很多人的comm为null所以得到的年薪也是null。所以为了保证计算的准确性,需要将null替换成0。

select empno,NVL(comm,0),(sal+NVL(comm,0))*12 from emp;

将所有的职位信息替换成中文显示

select ename,decode(job,'CLERK','办事员','SALESMAN','销售','MANAGER','经理','ANALYST','分析人员','PRESIDENT','总裁') from emp;
原文链接:https://www.f2er.com/oracle/208907.html

猜你在找的Oracle相关文章