Oracle单行函数详解


一  介绍 
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 
  • 1
  • 2
  • 下一页

相关内容