Oracle单行函数详解

Linux大全评论637 views阅读模式

一  介绍 

1.函数分为单行函数和多行函数 

2.单行函数分为:字符、数值、日期、转换、通用的函数 

3.单行函数: 

   操作数据对象 

   接受参数返回一个结果 

   只对一行进行变换 

   每行返回一个结果 

   可以转换数据类型 

   可以嵌套 

   参数可以是一列或一个值 

二  详解: 

1.  字符函数分为  

(1) 大小写控制函数 

小写转换 : SQL> select lower('LAOWANG') from dual; 

SQL> select * from emp where lower(ename)='smith'; 

大写转换: SQL> select upper('laowng') from dual; 

只转换第一个字符为大写: 

SQL> select initcap('laoWANG') from dual; 

(2) 字符控制函数 

连接字符串:SQL> select concat('hi','laowang') from dual; 

截取字符串:SQL> select substr('laowang',0,1) from dual; 结果 l 

SQL> select substr('laowang',0,2) from dual; 结果 la 

SQL> select substr('laowang',1,2) from dual;结果la 

可以看出截取字符串的时候是从索引为1开始的 

        字符串的长度:SQL> select length('laowang') from dual;  结果为6 

        获取指定字符的索引:SQL> select instr('laowang','a') from dual;  

                            结果为2 

        从左边截取10个字符:SQL> select lpad('laowang',10) from dual; 

                                结果 laowang 

              没有的用*代替:SQL> select lpad('laoang',20,'*') from dual; 

                                结果:**************laowang 

        从右边截取:SQL> select rpad('laoang',20,'*') from dual; 

        去空格:SQL> select trim('laowang   ') from dual; 

                    注:取出的是’’中字符前后的字符,去不掉两个字符之间的的空格 

        查询某字符中包含某字符: 

                SQL> select * from emp where instr(ename,'R')!=0;或 

                SQL> select * from emp where instr(ename,'R') <>0; 

                SQL> select * from emp where instr(ename,'R')=4; 

R在索引为4的ename 

2.数值函数 

截取.后两位四舍五入:SQL> select round(234324.354,2) from dual;   

结果为234324.35 

          截取.后两位,不截取:SQL> select mod(1700,200) from dual; 

                                结果为:100 

                                SQL> select mod(1701.5,200) from dual; 

                                结果为:101.5 

3.日期函数 

日期的差值: 

SQL> select to_date('08-8月-08')-to_date('13-3月-12') from dual;  结果为:-1313天数 

SQL> select (to_date('08-8月-08')-to_date('13-3月-12'))/365 from dual;   结果:-3.5972603 

两个日期相差的月数: 

SQL> select months_between(sysdate,hiredate) from emp;      

            向指定日期中加入若干月数: 

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

            指定日期的下一个日期: 

SQL> select next_day(sysdate,'星期一') from dual; 

本月的最后一天:SQL> select last_day(sysdate) from dual; 

            日期四舍五入:SQL> select round(sysdate,'yyyy') from dual; 

                            SQL> select round  

(to_date('1998-10-08','yyyy-mm-dd'),'yyyy') from dual; 

            日期截断:SQL> select trunc(sysdate,'YEAR') from dual; 

4.转换函数 

数据类型转换分为隐形的和显性的,我们对显型转换来介绍 

转换函数对日期的转换: 

首先显示出当前日期:SQL> select  to_char(sysdate) from dual; 

SQL> select  to_char(sysdate,'YYYY-MM-DD') from dual; 

结果为:2012-03-13 

            SQL> select  to_char(sysdate,'YYYY-MM-DD-day') from dual; 

                    结果为:2012-03-13-星期二   

            SQL> select  to_char(sysdate,'YYYY/MM/DD-day') from dual; 

                    结果为:2012/03/13-星期二   

SQL> select  to_char(sysdate,'YYYY"年"MM"月"DD"日"-day') from dual;         结果为:2012年03月13日-星期二 

 

SQL> select  to_char(sysdate,'year"年"mon-DD-day') from dual;   结果为:twenty twelve年3月 -13-星期二      

 

SQL> select  to_char(sysdate,'yyyy-mm-dd HH24:MI:SS AM')  

from dual;   结果为:2012-03-13 10:30:39 上午  

 

SQL> select  to_char(sysdate,'DD "of" MONTH') from dual; 

                结果:13 of 3月 

 

转换函数对数字的转换: 

            SQL> select to_char(sal,'$99,999.00') from emp; 

                        结果为: $800.00   美元符 

            SQL> select to_char(sal,'L99,999.00') from emp; 

                        结果为:¥800.00    本地的 

 

            字符串转换为数字:SQL> select to_number('999.00') from dual; 

                        结果为:999 

企鹅博客
  • 本文由 发表于 2019年10月1日 08:08:49
  • 转载请务必保留本文链接:https://www.qieseo.com/184449.html

发表评论