您的位置:首页 > 数据库 > Oracle

oracle 中一些独特的函数用法

2012-06-15 14:05 447 查看
在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()是找出列表中最小的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: