Oracle函数

简介:
lower函数:
 此函数将全部的大写字母都可以变为小写字母
  SELECT lower('ABCDE') FROM dual ;
 • dual表为一个虚拟表,以后介绍
upper函数:将输入的字符串变为大写字母
  SELECT upper('abcd') FROM dual ;
例如:之前查询的时候区分大小写,所以此处如果输入的是小写字母,就可以通过upper函数进行转换。
 查询雇员姓名内容为smith的全部员工。
 SELECT * FROM emp WHERE ename=UPPER('smith') ;
initcap函数:将每个字符串的首字母大写
 例如:要求将雇员表中的全部雇员信息的首字母大写。
  SELECT initcap(lower(ename)) FROM emp ;
 函数可以进行嵌套。
concat函数:字符串连接,可以连接两个字符串
 SELECT concat('hello',' world!!!') FROM dual ;
 实际上使用“||”也可以完成两个字符串的连接操作。
substr函数:字符串截取
 截取的时候需要注意:要从那里开始截取,之后取多长的长度。
 SELECT substr('hello',1,2) FROM dual ;
 注意:substr函数的开始点是从1开始的。
length:取出字符串的长度,例如,取出每一个雇员的姓名的长度:
 SELECT ename||' 姓名的长度为:'||length(ename) FROM emp ;
instr函数:查找在一个字符串中是否有指定的字符串,如果有,则返回其位置
 SELECT instr('hello','x') FROM dual ;
 • 如果有此字符串,则返回位置,如果没有,则返回0。
replace函数:替换,可以将一个字符串中的指定字符串替换为其他内容:
 SELECT replace('hello','l','x') FROM dual ;
trim函数:去掉左右空格的函数
 SELECT trim('        hello          ') FROM dual ;
查询:
 1、 检索姓名最后一个字母为N的雇员
  • SELECT * FROM emp WHERE substr(ename,-1,1)='N';
 2、 检索职务为“SALE”的全部员工信息
  • SELECT * FROM emp WHERE substr(job,1,4)='SALE';
 
ROUND表示四舍五入
 •SELECT ROUND(34.56,-1) FROM dual ;
TRUNC函数:表示截取函数
 • SELECT TRUNC(34.56,-2) FROM dual ;
MOD函数:取余数
 •SELECT MOD(10,3) FROM dual ;
取得当前日期:
 在Oracle中可以通过查询sysdate取得当前的日期:
  • SELECT sysdate FROM dual ;
 
例如:计算10部门中的员工进入公司的日期数:
 肯定使用当前日期-雇佣日期(hiredate) = 天数,天数/7为日期数。
 SELECT ename,round((sysdate-hiredate)/7) from emp ;
 
 
例如:
 求出所有员工的受雇月数:months_between,使用当前日期与雇佣日期比较。
 • SELECT ename,round(MONTHS_BETWEEN(sysdate,hiredate)) from emp ;
ADD_MONTHS:表示在日期的基础上增加几个月之后的日期:
 求出,三个月之后的日期是那一天:
  SELECT ADD_MONTHS(sysdate,3) FROM dual ;
NEXT_DAY:表示下一个这天(星期几)
 SELECT NEXT_DAY(sysdate,'星期一') FROM dual ;
LAST_DAY:求出当前日期所在月的最后一天:
 SELECT LAST_DAY(sysdate) FROM dual ;
例如:
 显示受雇时间不满320-个月的雇员的编号、受雇日期、受雇的月数、满六个月的复审日期、受雇后的第一个星期五以及受雇当月的最后一天
求出雇佣月数大于320的雇员信息:
 SELECT * FROM emp WHERE MONTHS_BETWEEN(sysdate,hiredate)>320 ;
综合:
 SELECT empno 雇员编号,hiredate 雇佣日期, 
 round(MONTHS_BETWEEN(sysdate,hiredate)) 雇佣月数 ,
 add_months(hiredate,6) 复审日期,next_day(hiredate,'星期五') 受雇后到第一个星期五,
 last_day(hiredate) 最后一天
FROM emp WHERE MONTHS_BETWEEN(sysdate,hiredate)>320 ;
 
例如:现在要求取出全部员工受雇的年份
 实际上要对hiredate中的内容进行分离,取出年份。
  SELECT empno,ename,TO_CHAR(hiredate,'YYYY') FROM emp ;
 取出雇佣的月份和日:
  SELECT empno,ename,TO_CHAR(hiredate,'YYYY') 年,
TO_CHAR(hiredate,'MM') 月,TO_CHAR(hiredate,'DD') 月 FROM emp ;
也可以通过此函数把显示的日期的格式进行修正:
 年-月-日:2008-4-7
 SELECT empno,ename,TO_CHAR(hiredate,'YYYY-MM-DD')  FROM emp ;
 
 正常情况下的日期,如果是月应该是两位,如果现在是2月,则会显示02月,如果现在不希望显示出前导0,则可以加入一个fm
 SELECT empno,ename,TO_CHAR(hiredate,'fmYYYY-MM-DD')  FROM emp ;
 
可以将一个数值按照指定的格式输出。
 SELECT empno,sal FROM emp ;  此时不是很明确的知道查询出的工资,而且工资的位数也不标准。
 使用to_char完成:SELECT empno,to_char(sal,'L99,999') FROM emp ;
to_date函数:
 可以将一个字符串变为一个日期类型。
  SELECT to_date('2007-4-7','YYYY-MM-DD') FROM dual ;
要求:
 查询出全部雇员的年薪(基本工资和佣金)。
  SELECT empno,(sal+comm)*12 FROM emp ;
 如果没有奖金的雇员,则年薪也没了,因为是null值,所以最后的计算结果仍然是null。
希望如果最后的值为null,则应该按0进行计算,此时就需要NVL函数的支持。
Nvl函数可以将空值变为一个特定的数值
 SELECT empno,sal,NVL(comm,0) FROM emp ;
使用此函数修改上面的查询:
 SELECT empno,(sal+NVL(comm,0))*12 FROM emp ;
 
 select empno,ename,job from emp ;
 希望:
 • 如果工作是CLERK:则显示办事员
 • 如果工作是SALESMAN:则显示为销售人员
 • 如果工作是MANAGER,则显示为经理
 SELECT empno,ename,DECODE(job,'CLERK','办事员','SALESMAN','销售人员','MANAGER','经理') FROM emp ;









本文转自 李兴华 51CTO博客,原文链接:http://blog.51cto.com/lixinghua/91209,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
SQL Oracle 关系型数据库
Oracle之日期计算相关函数
Oracle之日期计算相关函数
45 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle之regexp系列函数详解
Oracle之regexp系列函数详解
126 1
|
7月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
68 0
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
34 0
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
66 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
2月前
|
SQL Oracle 关系型数据库
Oracle查询优化-聚集函数
【2月更文挑战第5天】【2月更文挑战第13篇】聚集函数
19 4
|
3月前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
35 0
|
3月前
|
SQL Oracle 算法
Oracle函数
Oracle函数
98 1
|
4月前
|
SQL Oracle 关系型数据库
Oracle之有哪些日期计算函数?
Oracle之有哪些日期计算函数?
114 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle之常用聚集函数详解
Oracle之常用聚集函数详解
34 1

推荐镜像

更多