Welcome 微信登录

首页 / 数据库 / MySQL / 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
  • 下一页
RHEL/CentOS 5.x使用yum快速安装MySQL 5.5.xOrcale查询练习相关资讯      oracle数据库教程 
  • Oracle raw数据类型介绍  (01/29/2013 10:05:53)
  • 监听器注册与ORA-12514 错误分析  (11/13/2012 14:30:08)
  • Oracle SQL的cursor理解  (11/13/2012 14:16:17)
  • Oracle 如何强制刷新Buffer Cache  (01/29/2013 10:02:46)
  • dblink致Oracle库的SCN变成两库的  (11/13/2012 14:24:41)
  • Linux操作系统下完全删除Oracle数  (11/13/2012 08:25:52)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图