Oracle常用函数汇总
在Oracle OCP考试中,相当一部分知识点涉及到对于Oracle常见函数的考查。尽管Oracle官方文档SQL Language Reference中Functions一章内列举了所有Oracle自带函数,但如果要系统的看一遍,还是要花费相当的精力,更何况还是英文呢。如果碰到一个不熟悉的,就查一下,不经常用,又很容易遗忘。下面就对Oracle常见函数做个整理,方便以后查询。
一、 大小写转换函数
1. LOWER函数
LOWER函数将字符以小写形式输出。其语法为LOWER(char)。
例如:
SQL> select lower(100+100),lower(sysdate),lower('HELLO') from dual;
LOW LOWER(SYS LOWER
--- --------- -----
200 25-sep-14 hello
注意:返回的均是字符类型,在执行LOWER函数之前先计算数据和日期表达式,并隐式转换为字符数据。
2. UPPER函数
UPPER函数将字符以大写形式输出。其语法为UPPER(char)。
例如:
SQL> select upper('hello world') from dual;
UPPER('HELL
-----------
HELLO WORLD
3. INITCAP函数
INITCAP函数将字符串中每个单词的第一个字母大写,而该单词的剩余字母小写。
例如:
SQL> select initcap('hello WORLD! that is funny!') from dual;
INITCAP('HELLOWORLD!THATISF
---------------------------
Hello World! That Is Funny!
二、 字符操作函数
1. CONCAT函数
CONCAT函数用于连接两个字符串。有两个参数,语法为CONCAT(s1,s2)。
例如:
SQL> select concat('hello','world') from dual;
CONCAT('HE
----------
helloworld
SQL> select concat(concat(ename,'''s job is '),job) from emp where empno=7788;
CONCAT(CONCAT(ENAME,'''SJOBIS
-----------------------------
SCOTT's job is ANALYST
2. LENGTH函数
LENGTH函数返回字符串的字符数,包括空格,制表符和特殊字符。其语法为LENGTH(s)。
例如:
SQL> select length('hello world!') from dual;
LENGTH('HELLOWORLD!')
---------------------
12
3. LPAD和RPAD函数
LPAD和RPAD函数分别被称为左填充和右填充函数。它们分别在给定字符串左边或右边填充指定数量的字符。其语法为LPAD(s,n,p)和RPAD(s,n,p),其中s表示源字符串,n表示返回字符串的最终长度,p指定用于填充的字符串。注意:如果参数n小于或者等于源字符串s的长度,就不会添加任何字符,此时只返回源字符串s的前n个字符。p默认为空格。
例如:
SQL> select lpad('hello',10,'*'),lpad('hello',10,'*#'),lpad('hello',10),lpad('hello',4,'*') from dual;
LPAD('HELL LPAD('HELL LPAD('HELL LPAD
---------- ---------- ---------- ----
*****hello *#*#*hello hello hell
SQL> select rpad('hello',10,'*'),rpad('hello',10,'*#'),rpad('hello',10),rpad('hello',4,'*') from dual;
RPAD('HELL RPAD('HELL RPAD('HELL RPAD
---------- ---------- ---------- ----
hello***** hello*#*#* hello hell
4. TRIM函数
TRIM函数从字符串的开头或者结尾删除一些字符。其语法为TRIM([trailing|leading|both] trimstring from s)。其中
TRIM(s)删除输入字符串两边的空格
TRIM(trailing trimstring from s)从字符串s的结尾删除所有trimstring(如果存在的话)。
TRIM(leading trimstring from s)从字符串s的开头删除所有trimstring。
TRIM(both trimstring from s)从字符串s的开头和结尾删除所有trimstring。
SQL> select trim(both '*' from '***hello****') from dual;
TRIM(
-----
hello
SQL> select trim(trailing '*' from '***hello****') from dual;
TRIM(TRA
--------
***hello
SQL> select trim(leading '*' from '***hello****') from dual;
TRIM(LEAD
---------
hello****
注意:trimstring只能是一个字符。
SQL> select trim(leading '*!' from '*!*!hello') from dual;
select trim(leading '*!' from '*!*!hello') from dual
*
ERROR at line 1:
ORA-30001: trim set should have only one character
5. INSTR函数(In-string)
INSTR函数确定搜索字符串在给定字符串中的位置。它返回数字位置,如果搜索字符串不存在,则该函数返回0。其语法为INSTR(source string,search string,[search start position],[nth occurrence])。其中,后两个参数是可选的,search start position的默认值是1,即source string的开头。nth occurrence的默认值是1,即第一次出现。
例如:
SQL> select instr('1*3*5*7*9','*',-3,2) from dual;
INSTR('1*3*5*7*9','*',-3,2)
---------------------------
4
SQL> select instr('1*3*5*7*9','*') from dual;
INSTR('1*3*5*7*9','*')
----------------------
2
SQL> select instr('1*3*5*7*9','*',2) from dual;
INSTR('1*3*5*7*9','*',2)
------------------------
2
6. SUBSTR函数(Substring)
SUBSTR函数从给定源字符串中给定的位置开始,提取指定长度的子字符串。其语法为SUBSTR(source string,start position,[number of characters to extrace])。最后一个参数可选,倘若没有指定,默认从start position到source string结尾的字符数。
例如:
SQL> select substr('1*3*5*7',3) from dual;
SUBST
-----
3*5*7
SQL> select substr('1*3*5*7',3,2) from dual;
SU
--
3*
SQL> select substr('1*3*5*7',-3,2) from dual;
SU
--
5*
7. REPLACE函数
REPLACE函数用替换项取代源字符串中出现的所有搜索项。其语法为REPLACE(source string,search item,[replacement term])。replacement term默认为空字符。
例如:
SQL> select replace('1*3*5*7','*','->') from dual;
REPLACE('1
----------
1->3->5->7
SQL> select replace('1*3*5*7','*') from dual;
REPL
----
1357
三、 数字函数
1. 数字round函数
ROUND函数依据指定的小数精度对数值进行四舍五入运算。其语法为ROUND(source number,decimal precision)。decimal precision参数指定舍入的精度。默认是0,即对源数字四舍五入到整数。如果指定的小数精度n为正数,则要舍入的有效数字在小数点右边(n+1)个位置。如果n为负数,则要舍入的有效数字在小数点左边n个位置。
例如:
SQL> select round(145.78,-1) from dual;
ROUND(145.78,-1)
----------------
150
SQL> select round(145.78) from dual;
ROUND(145.78)
-------------
146
SQL> select round(145.78,1) from dual;
ROUND(145.78,1)
---------------
145.8
2. TRUNC函数(Truncate)
TRUNC函数依据指定的小数精度对数值进行截取运算。其语法为TRUNC(source number,decimal precision)。
例如:
SQL> select trunc(145.78,-1) from dual;
TRUNC(145.78,-1)
----------------
140
SQL> select trunc(145.78) from dual;
TRUNC(145.78)
-------------
145
SQL> select trunc(145.78,1) from dual;
TRUNC(145.78,1)
---------------
145.7
3. MOD函数(Modulus)
MOD函数返回除法运算的余数。
例如:
SQL> select mod(5,2) from dual;
MOD(5,2)
----------
1
SQL> select mod(5.2,2.2) from dual;
MOD(5.2,2.2)
------------
.8
四、 日期函数
1. MONTHS_BETWEEN函数
MONTHS_BETWEEN函数返回两个日期参数之间月数的数值。其语法为MONTHS_BETWEEN(date1,date2)。该函数计算date1和date2之间月份的差值(每月31天),即date1-date2。返回值可能由整数和小数部分组成。其中,整数表示这两个日期之间相差的月数。小数部分表示剩余的天数和时间,以31天的月份为基础。
例如:
SQL> select months_between(sysdate,sysdate-31) from dual;
MONTHS_BETWEEN(SYSDATE,SYSDATE-31)
----------------------------------
1
SQL> select months_between('2-MAR-2014','1-FEB-2014') from dual;
MONTHS_BETWEEN('2-MAR-2014','1-FEB-2014')
-----------------------------------------
1.03225806
SQL> select 1/31 from dual;
1/31
----------
.032258065
--可以看出小数部分是以31天为基础的。
2. ADD_MONTHS函数
ADD_MONTHS函数语法为ADD_MONTHS(date,number of months),即计算指定月份添加到指定date后的日期。月数可以为负。
例如:
SQL> select add_months('1-MAR-2014',1) from dual;
ADD_MONTH
---------
01-APR-14
SQL> select add_months('1-MAR-2014',2.9) from dual;
ADD_MONTH
---------
01-MAY-14
SQL> select add_months('1-MAR-2014',-2.9) from dual;
ADD_MONTH
---------
01-JAN-14
3. NEXT_DAY函数
NEXT_DAY返回在指定日期后下一次出现星期几的日期。其语法为NEXT_DAY(start date,day of the week)。函数计算在start date之后day of the week下一次出现的日期。day of the week可以是字符值或者整数值。其中,字符值至少是星期名称的前三个字符,例如,星期日可以表示为sun,sund,sunda或者Sunday。对于整数,1表示星期日,2表示星期一,以此类推。
例如:19-SEP-2014是周五
SQL> select next_day('19-SEP-2014',5) from dual;
NEXT_DAY(
---------
25-SEP-14
SQL> select next_day('19-SEP-2014','tue') from dual;
NEXT_DAY(
---------
23-SEP-14
SQL> select next_day('19-SEP-2014','SUNDAY') from dual;
NEXT_DAY(
---------
21-SEP-14
4. LAST_DAY函数
LAST_DAY函数提取指定日期所属的月,并计算该月最后一天的日期。其语法为LAST_DAY(date)。
例如:
SQL> select last_day('19-SEP-2014') from dual;
LAST_DAY(
---------
30-SEP-14
5. 日期ROUND函数
日期ROUND函数依据指定的日期精度格式对日期进行舍入运算。其语法为ROUND(source date,[date precision format]).source date表示任意日期。date precision format包括世纪(CC),年(YYYY),季度(Q),月(MM),星期(W),日(DD),时(HH)和分(MI)。
如果日部分大于16,则会入到下一个月,否则舍到当月。如果月在1和6之间,则会舍到当年开头的日期,否则入到下一年开头的日期。
例如:
查询的时间为:2014-09-26 04:44:38
SQL> select round(sysdate) day,round(sysdate,'w')week,round(sysdate,'month')month,round(sysdate,'year')year from dual;
DAY WEEK MONTH YEAR
--------- --------- --------- ---------
26-SEP-14 29-SEP-14 01-OCT-14 01-JAN-15
因为查询时间是4点,没有查过12点,故DAY是当天。因为本月1号是周一,WEEK返回的是查询时间起,下一个周一的日期,即29-SEP-14。因为查询时间是26号,超过16号,故MONTH需入到下一个月。因为查询时间是9月,超过6月,故入到下一年。
6. 日期TRUNC函数
日期TRUNC函数依据指定的日期精度格式对日期进行截取运算。其语法为TRUNC(source date,[date precision format])。date precision format指定截取的精度,默认的截取精度是日。这就意味着将source date的所有时间都设置为00:00:00(00时、00分和00秒)。在月级别上的截取将source date的日期设置为该月的第一天。年级别的截取返回当年开头的日期。
例如:
SQL> select trunc(sysdate) day,trunc(sysdate,'w')week,trunc(sysdate,'month')month,trunc(sysdate,'year')year from dual;
DAY WEEK MONTH YEAR
--------- --------- --------- ---------
26-SEP-14 22-SEP-14 01-SEP-14 01-JAN-14
唯一需要注意的是WEEK,因为本月1号是周一,WEEK返回的是本周周一的日期。
Oracle常用函数汇总的更多相关文章
- oracle 常用函数汇总
一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char) ...
- ORACLE常用函数汇总(持续更新中....)
在使用ORACLE过程中,把一些常用的函数的相关用法,注意事项进行简单的汇总,便于自己查询参考. DBMS_RANDOM包 dbms_random是一个可以生成随机数值或者字符串的程序包.这个包有in ...
- ORACLE常用函数汇总【转】
PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句, 函数主要分为两大类: 单行函数 ...
- Oracle常用函数
前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...
- php常用函数汇总
php常用函数汇总 字符串截取: 1.substr('要截取的字符串','从第几个字符开始','到第几个字符结束'); * 截取英文或者数字 ...
- 非常实用的PHP常用函数汇总
这篇文章主要介绍了非常实用的PHP常用函数,汇总了加密解密.字符串操作.文件操作.SQL注入等函数的实例与用法说明,在PHP项目开发中非常具有实用价值,需要的朋友可以参考下 本文实例总结了一些在php ...
- Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数
首先在oracle中没有datediff()函数可以用以下方法在oracle中实现该函数的功能:1.利用日期间的加减运算天:ROUND(TO_NUMBER(END_DATE - START_DATE) ...
- 【PHP】最详细PHP从入门到精通(三)——PHP中的数组常用函数汇总
PHP从入门到精通 之PHP中的数组常用函数详解 数组作为PHP中最常用的结构之一,PHP强大的数组函数功能,给数组的相关操作带来了极大的便利.今天给大家介绍的PHP中数组函数,是PHP数组中重要的 ...
- oracle常用函数总结(二)
之前也有写过“oracle常用函数总结(一)”,为了尽量找全常见oracle函数,笔者特意查找了相关资料来作为参考,下边给大家罗列出来,部分和之前有重复的,希望能帮到大家! 列举了31个函数和1个分组 ...
随机推荐
- ABP框架 - 领域服务
文档目录 本节内容: 简介 例子 创建一个接口 实现服务 使用应用服务 相关论述 为什么不只用应用服务? 如何强制你使用领域服务? 简介 领域服务(或服务)用来执行领域操作和业务规则.Eric Eva ...
- [翻译]AKKA笔记 - CHILD ACTORS与ACTORPATH -6
原文:http://rerun.me/2014/10/21/akka-notes-child-actors-and-path/ Actor是完全的继承结构.你创建的任何Actor肯定都是一个其他Act ...
- node.js学习总结(一)
1.1.1 安装 Node.js 有三种方式安装 Node.js:一是通过安装包安装,二是通过源码编译安装,三是在 Linux 下可以通过 yum|apt-get 安装,在 Mac 下可以通过 Hom ...
- python property理解
一般情况下我这样使用property: @property def foo(self): return self._foo # 下面的两个decrator由@property创建 @foo.sette ...
- 图片放大功能插件及jquery.extend函数理解
前端时间,产品提出社区评论中的图片需要有放大功能.感觉可以共用,所以就想整合一个插件,过程中也借鉴了一些例子. 分析下自己的代码思路: var scaleImg = function(opts) { ...
- 【Win 10 应用开发】分析 URI 中的查询字符串
分析URI中的字符有K种方法(K >= 2),如果查询字符串中的参数比较简单,可以通过子字符串查找的方式来处理:如果查询字符串相对复杂,你可以使用正则表达式来匹配 key1=value1 , ...
- Hadoop的数据管理
Hadoop的数据管理,主要包括Hadoop的分布式文件系统HDFS.分布式数据库HBase和数据仓库工具Hive的数据管理. 1.HDFS的数据管理 HDFS是分布式计算的存储基石,Hadoop分布 ...
- Java多线程系列--“JUC锁”04之 公平锁(二)
概要 前面一章,我们学习了“公平锁”获取锁的详细流程:这里,我们再来看看“公平锁”释放锁的过程.内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系 ...
- 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(2)
作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...