Oracle常用函数汇总

摘要:
在OracleOCP考试中,相当多的知识点涉及对常见Oracle函数的考试。以下是用于将来查询的常见Oracle函数的摘要。例如:SQL˃selectlower,lower,low from dual;LOWLOWER(SYSLOWER------------------20025-sep-14hello注意:返回的所有类型都是字符类型。在执行LOWER函数之前,将计算数据和日期表达式,并隐式转换为字符数据。例如:SQL˃selectconcatfrom-dual;CONCAT('HE------------------helloworldSQL˃selectconcat(CONCAT(name,''sjobs'),job)fromwheempno=7788;CONCAT(CONCAT(ENAME,“”SJOBIS------------------------------SCOTT的jobisANALYST2.LENGTH函数LENGTH功能返回字符串中的字符数,包括空格、制表符和特殊字符。hello”)来自dual*ERRORatline1:ORA-3001:trimsets应仅保存一个字符5.INSTR函数INSTR函数确定搜索字符串在给定字符串中的位置。最后两个参数是可选的。searchstartposition的默认值为1,这是sourcestring的开头。

在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常用函数汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇淘宝网的剩余时间(倒计时)实现同比 VS 环比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle:管理 date类型 interval 动态变化的分区:查询、删除

-- 创建临时表,目的是获取long类型的:high_value 的值 drop table syscom_tab_partition_temp purge ; create table prm8_user.syscom_tab_partition_temp (table_name varchar2(30),partition_position int,...

Java日期时间

Java日期时间 Java.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。 第一个构造函数使用当前日期和时间来初始化对象。 Date() 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。 Date(long millisec) Date对象创建以后,可以调用下面的方法。   获...

WebLogic浅析

WebLogic安装 官网下载安装过程没啥特别的,不多说了自己去看吧! WebLogic简介   WebLogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和...

浅谈 SQL 注入(注入篇)

一、SQL注入简介 1.1 什么是SQL注入 在用户可控制的参数上过滤不严或没有任何限制,使得用户将传入的参数(如URL,表单,http header)与SQL语句合并构成一条 SQL语句传递给web服务器,最终传递给数据库执行增删改查等操作,并基于此获取数据库数据或提权进行破坏。 1.2 SQL注入产生的原因 SQL Injection: 程序员在编写代...

达梦数据库:第一章:MySQL数据库与达梦数据库的区别

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点: 1、通用性达梦数据库管理系统兼容多种硬件体系,可运行于X86、X64、SPARC、POWER等硬件体系之上。DM各种平台上的数据存储结构和消息通信结构完全一致,使得DM各种组件在不同的硬件平台上具有一致的使用特性。达梦数据库管理系统产品实现了平台无关性...

为博客园(或网站)添加百度分享按钮 自定义调用JS代码

1、百度分享代码调用地址 http://share.baidu.com/code 根据提示,一步一步的自定义选择,最后复制自定义好的样式,添加到WEB。 2、在页首Html代码中添加复制过来的JS代码 <!--baidu分享--> <script>window._bd_share_config={"common":{"bdSnsK...