设为首页 加入收藏

TOP

Oracle学习笔记4--单行函数(一)
2014-11-24 02:35:16 来源: 作者: 【 】 浏览:12
Tags:Oracle 学习 笔记 4-- 单行 函数

使用函数可以完成一系列的操作。数据库之间的不同,在于对函数的支持上是不一样。

本次笔记学习函数。函数分为单行函数和多行函数,此处重点学习单行函数。

单行函数分类:

字符函数

数值函数

日期函数

转换函数

通用函数

字符函数:又分为大小写控制函数和字符控制函数

1)大小写空值函数:

LOWER()

UPPER()

INITCAP()

SQL> select lower('SQL COURSE') , upper('sql course') , initcap('SQL course') from dual ;
 
LOWER('SQLCOURSE') UPPER('SQLCOURSE') INITCAP('SQLCOURSE')
------------------ ------------------ --------------------
sql course         SQL COURSE         Sql Course

通过上面的查询结果,看出:

Lower() 函数的作用是:将字符转换为小写。

Upper()函数的作用是:将字符转换为大写。

Initcap()函数的作用是:将字符的首字母转换为大写。

例:查询名字是king的雇员信息 ,由于不确定数据库中名字的大小写形式,我们引入lower函数和 upper()函数,来保证查询的有效性。

SQL> select * from emp  where lower(ename) = 'king' ;
 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7839 KING       PRESIDENT       1981/11/17    5000.00               10

SQL> select * from emp  where ename = upper('king' );
 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7839 KING       PRESIDENT       1981/11/17    5000.00               10

例:将查询结果字符的首字母转换为大写形式,使用initcap 函数。

SQL> select initcap(ename) from emp where ename = 'KING';
 INITCAP(ENAME)
--------------
King

字符控制函数:

concat()

substr()

length()

replace()

例:字符串除了使用‘||’连接之外,还可以使用concat() 函数进行连接 。

SQL> select concat('Hello ' , 'world'  ) from  dual ;
 
CONCAT('HELLO','WORLD')
-----------------------
Hello world

SQL> select substr('hello' , 1 , 2) ,length('world') , replace('sql' , 'q' , 'X') from dual ;
 
SUBSTR('HELLO',1,2) LENGTH('WORLD') REPLACE('SQL','Q','X')
------------------- --------------- ----------------------
	he                   5 		sXl

上例中我们可以看到 substr()的作用是截取字符串,在字符串的后面跟两个参数,第一个参数表示的是要截取的

起始位置,第二个参数表示的是截取的个数,length()函数返回的是字符串的长度。replace() 字符串后面跟两

个参数,第一个参数表示要替换的字母,第二个参数表示将第一个字母换为第二个字母。

另外Oracle还支持倒着截取字符串的方式:

SQL> select ename ,substr(ename ,-3 ) from emp  where deptno = 10 ;
 
ENAME      SUBSTR(ENAME,-3)
---------- ----------------
CLARK      ARK
KING       ING
MILLER     LER

数值函数:

round():四舍五入函数

trunc():截断小数位函数

mod() :取余函数

例:

SQL> select round(234.12 , 2) , round(234.324) , round(234.25 , -2) from dual;
 
ROUND(234.12,2) ROUND(234.324) ROUND(234.25,-2)
--------------- -------------- ----------------
    234.12            234              200

后面的参数 2 表示保留小数点后两位,如果不写,默认为零,-2 表示对小数点前面的数进行四舍五入ROUND(234.25,-2) , 4 舍去,3 舍去得到200。

例:

SQL> select trunc(234.12 , 2) , trunc(234.324) , trunc(248.25 , -2) from dual;
 
TRUNC(234.12,2) TRUNC(234.324) TRUNC(248.25,-2)
--------------- -------------- ----------------
         234.12            234              200

trunc(234.12 , 2)制定保留小数的位数; trunc(234.324)直接舍去小数 , trunc(248.25 , -2),舍去小数点前面的两位。

小结:trunc() 和 round()函数的区别是trunc(),直接进行相应的操作,不会执行四舍五入。

例:

SQL> select mod(10 , 3) from dual ;
 
 MOD(10,3)
----------
         1

使用mod()函数进行求余的操作。

日期函数:

关于日期的一些操作:

日期-数字 = 日期

日期+数字 = 日期

日期-日期 = 天数

日期之间不可以做加法的运算。

例:估计员工入职的月数,sysdate 表示的是当前的时间。

SQL> select empno , ename , round((sysdate - hiredate)/30) days from emp ;
 
EMPNO ENAME            DAYS
----- ---------- ----------
 7369 SMITH             406
 7499 ALLEN             403
 7521 WARD              403
 7566 JONES             402
 7654 MARTIN            396
 7698 BLAKE             401
 7782 CLARK             400
 7788 SCOTT             328
 7839 KING              394
 7844 TURNER            397
 7876 ADAMS             327
 7900 JAMES             394
 7902 FORD              394
 7934 MILLER            392
 
14 rows selected

其他日期函数:

MONTHS_BETWEEN():求出给定日期范围的月数。

ADD_MONTHS():在制定日期上加上指定的月数,求出之后的日期。

NEXT_D

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇10GRAC节点2宕机通过修改listener.. 下一篇oracleCONNECTBYPRIOR叶子节点查..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: