Jester Zhu

从学习中得到乐趣,从乐趣中得到灵感,从灵感中创造真知。Think well,just do it.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

oracle中,一些独有的函数用法

Posted on 2010-05-14 14:19  Jester Zhu  阅读(2856)  评论(0编辑  收藏  举报

在MS Sql Server下,写sql写习惯了,突然需要在Oracle下写sql,说实话原则上没多大区别,可是有些Oracle内带函数如果不了解,不去用,有时候还挺麻烦。我接下来准备写个小总结,把做项目中涉及到的一些Oracle函数列举出来,一方面为了自己以后查找方便(本人年纪大了,脑袋不好用了,呵呵);另一方面也希望给大家一个方便,通过讨论可以互相学习,汲取各种经验。开始了:

1.NULLIF()

SELECT ename, NULLIF (comm, 0) COMM FROM emp;
ENAME            COMM
----------       ----------
SMITH
ALLEN             300
WARD              500
JONES
MARTIN           1400
BLAKE
CLARK
SCOTT
这个函数一看就知道是啥意思,如果comm=0,结果集里可以用空代替0。

2.COALESCE()

SELECT ename, COALESCE(comm, 0) COMM FROM emp;
ENAME            COMM
----------       ----------
SMITH               0
ALLEN             300
WARD              500
JONES               0
MARTIN           1400
BLAKE               0
CLARK               0
SCOTT               0
这个函数意思其实跟上个差不多,只不过可以任意替换想要在结果集里显示的值。如下:

SELECT ename, COALESCE(to_char(comm), 'None') COMM FROM emp;
ENAME            COMM
----------       ----------
SMITH            None
ALLEN            300
WARD             500
JONES            None
MARTIN           1400
BLAKE            None
CLARK            None
SCOTT            None
你看一样吧。

3.NVL()

此函数比较简单,就是判断是否为空,可以设定某个值,比如nvl(a,0,1),意思就是如果a为空,显示0,否则为1。

4.lpad() 和 rpad()

select lpad(ename,10,'*'),rpad (ename,10,'>') from emp;

LPAD(ENAME,10,'*')   RPAD(ENAME,10,'>')
-------------------- --------------------
*****SMITH           SMITH>>>>>
*****ALLEN           ALLEN>>>>>
******WARD           WARD>>>>>>
*****JONES           JONES>>>>>
****MARTIN           MARTIN>>>>
*****BLAKE           BLAKE>>>>>
*****CLARK           CLARK>>>>>
*****SCOTT           SCOTT>>>>>
******KING           KING>>>>>>
****TURNER           TURNER>>>>
*****ADAMS           ADAMS>>>>>

LPAD(ENAME,10,'*')   RPAD(ENAME,10,'>')
-------------------- --------------------
*****JAMES           JAMES>>>>>
******FORD           FORD>>>>>>
****MILLER           MILLER>>>>

已选择14行。
从结果可以看出,lpad()函数的作用是:如果列的长度没有达到指定的值,则在列的左边不上相应的 字符。rpad()函数是向右补全。

5.greatest ()  和 least()

select greatest (1,2,3,4,5) ,least(0,1,2,3,4,5) from dual

GREATEST(1,2,3,4,5) LEAST(0,1,2,3,4,5)
------------------- ------------------
                  5                  0

从结果可以看出,greatest ()函数的作用是:找出列表中最大的值,而least()是找出列表中最小的值。

找个时间继续扩充,希望大家也帮助我继续扩充。