Oracle常用函数

一、函数的作用(了解)

       1、进行数据计算

       2、修改单个数据项

       3、处理成组行的输出

       4、指定日期和数字的显示格式

       5、转换列数据类型

二、函数类型

       1、单行函数

       2、多行函数

三、单行函数

       1、定义:单行函数只处理单个行,并且每行返回一个结果;

       2、常见类型:字符函数、数字函数、日期函数、转换函数、通用函数;

       3、用途:用于维护数据操作、获取参数并返回一个特定功能输出的值、函数是在每行上操作、每行有一行返回值、可以修改数据类型、能嵌套、可以接受多个参数;

       4、特征:作用于查询返回的每个行、为每行返回一个结果、可能会返回与引用数据类型不同的数据值、可能需要一个或多个参数、可以用在SELECT、WHERE、ORDER BY子句中,也可以嵌套;

四、字符函数举例

        1、大写转换:

            SQL> select upper('computer') from dual;

             

            UPPER('COMPUTER')

            -----------------

            COMPUTER

 

    2、小写转换:

            SQL> select lower('COMPUTER') from dual;

             

            LOWER('COMPUTER')

            -----------------

            computer

 

    3、首字母大写

            SQL> select initcap('computer home') from dual;

             

            INITCAP('COMPUTERHOME')

            -----------------------

            Computer Home

 

        4、字符串连接

            SQL> select concat('computer','home') from dual;

             

            CONCAT('COMPUTER','HOME')

            -------------------------

            computerhome

       说明:concat函数效果等同于||,为了书写方便,日常习惯中我们经常使用||;

 

    5、字符串截取

            说明:字符串角标从1开始;

                  第二个参数1表示从第几位开始截取,第三个参数3表示截取的位数;

                  第三个参数可以为空,表示从截取位开始截取剩余所有字符内容;

                  substr函数也可支持从末位开始截取,方法是第二个参数是负数;

            SQL> select substr('computer',1,3) from dual;

             

            SUBSTR('COMPUTER',1,3)

            ----------------------

            com

 

            SQL> select substr('computer',1) from dual;

             

            SUBSTR('COMPUTER',1)

            --------------------

            computer

            

            SQL> select substr('computer',-5) from dual;

             

            SUBSTR('COMPUTER',-5)

            ---------------------

            puter

 

    6、字符串长度

            SQL> select length('computer') from dual;

             

            LENGTH('COMPUTER')

            ------------------

                             8

 

    7、字符位置

            SQL> select instr('computer','m') from dual;

             

            INSTR('COMPUTER','M')

            ---------------------

                                3

       说明:若查询的字符在该字符串中存在,则返回角标数值,如果不存在返回0,若查询的字符在该字符串中存在多个,则返回第一次出现的角标。

 

    8、填充函数(lapd、rpad)

            SQL> select lpad('hello',13,'*') from dual;

             

            LPAD('HELLO',13,'*')

            --------------------

            ********hello

        说明:上面例子是lpad的举例,rpad效果类似lpad,含义是从从字符串左边开始填充*,*和字符串的总长度是13

 

    9、删除字符串两端的空格

            SQL> select trim(' computer ') from dual;

             

            TRIM('COMPUTER')

            ----------------

            computer

 

四、数字函数     

    1、round函数

 

            SQL> select round(32.658,2) from dual;

             

            ROUND(32.658,2)

            ---------------

                      32.66

            说明:保留数字的小数位数,按照四舍五入原则进行取舍。

 

    2、trunc函数

            SQL> select trunc(32.658,2) from dual;

             

            TRUNC(32.658,2)

            ---------------

                      32.65

            说明:truc函数将精确小数位数后数字全部切除,不进行四舍五入。

 

    3、mod函数

            SQL> select mod(11,3) from dual;

             

             MOD(11,3)

            ----------

                     2

            说明:mod是取余数的函数。

 

五、日期函数     

    1、存储格式:

            ORACLE用内部用下列数字格式来存储世纪、年、月、日、小时、分、秒

CENTURYYEARMONTHDAYHOURMINUTESECOND
21141009153721

   2、默认显示格式:

        ORACLE默认按照美国人习惯的格式进行显示(sqlplus中),格式是日-月-年,如09-10月-14;

   3、oracle中如何查询当前日期

        select sysdate from dual;

        说明:查询出的结果是根据oracle所安装的计算机时间而定,并非客户端时间。

   4、如何修改成中国人习惯的“年-月-日”格式

        alter session set nls_date_format='YYYY-MM-DD';

        说明:这个更改只对当前会话有效,注销sqlplus重新登录后,恢复至默认显示状态;

   5、oracle中日期最小的计算单位是天

      比如我们需要计算当前日期距离2012年7月14日相隔多少天。

        SQL> select sysdate-to_date('20120714','yyyymmdd') from dual;

         

        SYSDATE-TO_DATE('20120714','YY

        ------------------------------

                      817.660671296296

   6、months_between:计算两个日期相隔的月份数

        SQL> select months_between(sysdate,to_date('20120714','yyyymmdd')) from dual;

         

        MONTHS_BETWEEN(SYSDATE,TO_DATE

        ------------------------------

                      26.8601515830346

   7、add_months:月份添加函数

        SQL> select add_months(sysdate,1) from dual;

         

        ADD_MONTHS(SYSDATE,1)

        ---------------------

        2014/11/9 15:59:08

        说明:参数支持负数,即倒减运算;

   8、numtoyminterval:年、月计算函数

        SQL> select to_date('20120714','yyyymmdd')+numtoyminterval(2,'year') from dual;

         

        TO_DATE('20120714','YYYYMMDD')

        ------------------------------

        2014/7/14

        说明:numtoyminterval不能单独使用,必须与一个具体的时间点联合起来做算术运算

   9、numtodsinterval:日、时、分、秒计算函数

        SQL> select to_date('20120714','yyyymmdd')+numtodsinterval(818,'day') from dual;

         

        TO_DATE('20120714','YYYYMMDD')

        ------------------------------

        2014/10/10

        说明:函数中的参数只能是单数形式,比如day、hour、second等;

   10、ORACLE中周日是每周的第一天,根据软件版本的不同,可能用0或1来表示,如果用0,则用0-6表示周日到周六,用1表示,则用1-7表示周日至周六;

       next_day:默认表示指定日期一周内计算周几的具体日期,如果想想计算下周六是几号,如下:

        SQL> select next_day(sysdate+7,7) from dual;

         

        NEXT_DAY(SYSDATE+7,7)

        ---------------------

        2014/10/18 16:28:36

    11、last_day:计算指定日期所在月份的最后一天

        SQL> select last_day(sysdate) from dual;

         

        LAST_DAY(SYSDATE)

        -----------------

        2014/10/31 16:33:

    12、使用上午或下午区分当前日期时间

        SQL> select to_char(sysdate,'yyyy-mm-dd AMhh:mi:ss') from dual;

         

        TO_CHAR(SYSDATE,'YYYY-MM-DDAMH

        ------------------------------

        2014-10-09 下午04:41:56

六、转换函数

        1、按照触发类型分为:隐式转换、显式转换;

        2、隐式转换:作比较的两个值数据类型不一致,oralce内部转换成一样的,转换原则是字符类型转换成其他类型;

        3、十进制转换为十六进制

             例如将1000转化为十六进制表示

 

        SQL> select to_char('1000','xxx') from dual;

         

        TO_CHAR('1000','XXX')

        ---------------------

         3e8

        说明:1000表示十进制的1000,xxx表示字符位数,如果是xx,则结果是##,因为占位符不足,所以保险起见,占位符可以多写。

原文出处:http://blog.51cto.com/dushuai/1561837

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值