Oracle 11g 学习三:单行函数

    数据库开发必须学习单行函数。单行函数分为:字符函数、数字函数、日期函数、转换函数和通用函数,其中最后两个函数最为重要。

一、字符函数:主要进行字符串的操作

    a. UPPER(字符串|列):将输入的字符串变为大写

       例:SELECT UPPER('hello') FROM dual ;

           SELECT * FROM emp WHERE ename=UPPER('&str') ;  -->将输入的字符串转大写

    b. LOWER(字符串|列):将输入的字符串转小写

       例:SELECT LOWER(ename) FROM emp ;

    c. INITCAP(字符串|列):输入字符串首字母大写

       例:SELECT INITCAP(ename) FROM emp ;

    d. LENGTH(字符串|列):求出字符串的长度

       例:SELECT ename,LENGTH(ename) FROM emp WHERE LENGTH(ename)=4;

    e. REPLACE(字符串|列):字符替换

       例:SELECT ename,REPLACE(ename,'A','_') FROM emp ;  -->ename中的字母‘A’由‘_’替换

    f. SUBSTR(字符串|列,开始点[,结束点]):字符串的截取

       注意:SUBSTR(字符串|列,开始点):表示从起始点截取至结尾

             SUBSTR(字符串|列,开始点,结束点):表示从起始点截取至结束点,其中起始点为0或者1都一样都表示从字符串开头开始,起始点也可以为负值-x(如-3)表示从字符串的结尾倒数x处开始截取至末尾。

       例:SELECT ename,SUBSTR(ename,0,3) FROM emp ;

           SELECT ename,SUBSTR(ename,1,3) FROM emp ;

           SELECT ename,SUBSTR(ename,-3) FROM emp ;

二、数字函数

    a. ROUND(数字|列[,保留小数的位数]):四舍五入;保留小数位也可为-1,表示从十位开始保留四舍五入

       例:SELECT ROUND(903.53567),ROUND(-903.53567),ROUND(903.53567,2),ROUND(903.53567,-1) FROM dual;

    b. TRUNC(数字|列[,保留小数位]):舍弃指定位置的内容

       例:SELECT TRUNC(903.53567),TRUNC(-903.53567),TRUNC(903.53567,2),TRUNC(903.53567,-1) FROM dual;

    c. MOD(数字1,数字2):取模或者取余数

       例:SELECT MOD(37,5) FROM dual ; --> 37%5=2

三、日期函数

    SYSDATE:表示取得当前日期时间

    日期+数字=日期:表示若干天之后

       例:SELECT SYSDATE +30,SYSDATE+100 FROM dual ;

    日期-数字=日期:表示若干天之前

                     例:SELECT SYSDATE +30,SYSDATE+100 FROM dual ;

    日期-日期=数字:表示两个日期间的天数,一定是大日期减小日期

       例:SELECT ename,hiredate,SYSDATE-hiredate FROM emp ;

    a. LAST_DAY(日期):求出指定日期的最后一天

       例:SELECT LAST_DAY(SYSDATE) FROM dual ;

    b. NEXT_DAY(日期,星期x):求出指定下一个星期x的日期,其中‘星期x’也可以使用1-7的数字表示,1表示星期日,2表示星期一,3表示星期二,依次类推。

       例:SELECT NEXT_DAY(SYSDATE,'星期二') FROM emp ;

           SELECT NEXT_DAY(SYSDATE,3) FROM emp ;

    c. ADD_MONTHS(日期,数字):求出若干月之后的日期

       例:SELECT ADD_MONTHS(SYSDATE,4) FROM dual ;

    d. MONTHS_BETWEEN(日期1,日期2):求出两个日期间的月份,日期1最好大于日期2

       例:求出雇员雇佣的月份

           SELECT ename,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp ;

    注意:在Oracle中使用日期操作,建议使用日期函数,因为这可以有效避免闰年问题。

四、转换函数:完成数据格式间的转换

    a. TO_CHAR(字符串|列,格式字符串):将日期,数字转换为字符显示

       例1:按固定格式输出年月日需要一些格式字符串:年:yyyy,月:mm,日:dd;前导fm表示去掉日期显示中的‘0’

           SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM emp ;

           SELECT TO_CHAR(SYSDATE,'fmyyyy-mm-dd') FROM emp ;

       例2:输出年月日时分秒:SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM emp ;

       例3:TO_CHAR()也可用于数字的格式化,其中字母‘L’表示LOCAL含义,即当期所在语言环境下的货币符号

           SELECT TO_CHAR(97895463764,'L999,999,999,999') FROM emp ;

    b. TO_DATE():将字符串转换为日期DATE型数据

       例:SELECT TO_DATE('2014-08-02','yyyy-mm-dd') FROM dual ;

    c. TO_NUMBER():将字符串转换为数字

       例:SELECT TO_NUMBER('1')+TO_NUMBER('3') FROM dual;

       但是在Oracle中更习惯与使用如下简单方式:SELECT'1'+'3' FROM dual;

五、通用函数

    通用函数主要有两个:NVL()、DECODE(),这两个函数是Oracle独有的函数

    a. NVL()函数用于处理NULL项,可以将NULL转化为一个数字:NVL(NULL,数字x)

       例:SELECT ename,sal,comm,(sal+comm)*12 income FROM emp ; --> 结果income中存在为NULL项,是由于comm中存在NULL项造成的。

       使用NVL()函数:SELECT ename,sal,comm,(sal+NVL(comm,0))*12 income FROM emp ;

    b. DECODE()函数:多数值判断,语法格式如下:

       DECODE(数值|列,判断1,显示1,判断2,显示2,判断3,显示3,...)

       例:现在要求显示全部雇员的职位,但是显示使用中文,CLERK:办事员,SALESMAN:销售,MANAGER:经理,ANALYST:分析员,PRESIDENT:总裁

       SELECT ename,empno,job,DECODE(job,'CLERK','办事员','SALESMAN','销售','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') FROM emp ;


*************by jixiangrurui  转载请注明出处*************




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值