日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ORACLE中函數(shù)

 pablo3518 2007-06-29
ORACLE中函數(shù)
2007-06-29
  Oracle已經(jīng)內(nèi)建了許多函數(shù),不同的函數(shù)有不同的作用和用法,有的函數(shù)只能作用在一個(gè)記錄行上,有的能夠作用在多個(gè)記錄行上,不同的函數(shù)可能處理不同的數(shù)據(jù)類型。常見的有兩類,單行函數(shù)和分組函數(shù) 。

單行函數(shù):

單行函數(shù)

分類 函數(shù) 功能 示例
字符函數(shù) LPAD(<c1>,<i>[,<c2>]) 在字符串c1的左邊添加字符串c2直到c1字符串的長度等于i。

SELECT  LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpad

FROM DUAL;

 

RPAD(<c1>,<i>[,<c2>]) 在字符串c1的右邊添加字符串c2直到c1字符串的長度等于i。
LOWER(<c1>) 把字符串c1轉(zhuǎn)換為小寫 SELECT LOWER(ename)  one,UPPER(ename) two, INITCAP(ename) FROM EMP;
UPPER(<c1>) 把字符串c1轉(zhuǎn)換為大寫
INITCAP(<c1>) c1字符串的每一個(gè)單詞的第一個(gè)字母轉(zhuǎn)換成大寫字母
LENGTH(<c1>) 返回字符串c1的長度 SELECT LENGTH(‘How are you’) FROM DUAL;
SUBSTR(<c1>,<i>[,<j>]) 返回字符串c1中從第i個(gè)位置開始的j個(gè)字符(向右)。如果省略j,則返回c1中從第i個(gè)位置開始的所有字符。如果j為負(fù),則返回字符串c1中從第i個(gè)位置開始的j個(gè)字符(向左)。 SELECT SUBSTR(‘Hello,World’,1,5) FROM DUAL;
INSTR(<c1>,<c2>[,<i>[,<j>]]) c1中從位置i開始查找c2c1中出第j次的位置,i可以為負(fù)(此時(shí),從c1的尾部開始)

SELECT INSTR(‘Mississippi’,’i’,3,3) FROM DUAL; 返回結(jié)果11。

SELECT INSTR(‘Mississippi’,’i’,-2,3) FROM DUAL; 返回結(jié)果2。

 

LTRIM(<c1>,<c2>) c1前面開始去掉出現(xiàn)在c2的中任何前導(dǎo)字符集。 SELECT LTRIM(‘Mississippi’,’Mis’) FROM DUAL; 返回結(jié)果’ppi’。

SELECT RTRIM(‘Mississippi’,’ip’) FROM DUAL; 返回結(jié)果’Mississ’。
 
RTRIM(<c1>,<c2>) c1后面開始去掉出現(xiàn)在c2的中任何前導(dǎo)字符集。
數(shù)學(xué)函數(shù) ABS(<n>) 返回n的絕對值 SELECT ABC(-2),ABS(2) FROM DUAL;
ROUND(<n1>,<n2>) n1的小數(shù)點(diǎn)后保留n2位(四舍五入)并返回。如果n2小于零,n1舍入到小數(shù)點(diǎn)左邊。

SELECT ROUND(12345.678,-2),

ROUND(12345.678,2)

 FROM  DUAL;

分別返回結(jié)果:1230012345.68。

 

CEIL(<n>) n 向上取整,并返回。

SELECT CEIL(5.1),CEIL(-21.4) FROM  DUAL;

分別返回:6, -21。

 

FLOOR(<n>) n 向下取整,并返回。

SELECT FLOOR(5.1),FLOOR(-21.4) FROM  DUAL;

分別返回:5, -22。

 

MOD(<n1>,<n2>) 返回n1n2后的余數(shù)。

SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;

分別返回結(jié)果:4,0.5,-1。

 

SIGN(<n>)

符號(hào)函數(shù),n>0,返回1。

n<0,返回-1。

n=0,返回0。

 

SELECT SIGN(-2.3),SIGN(2.3),SIGN(0) FROM DUAL;
SQRT(<n>) 返回n的平方根 SELECT SQRT(9) FROM DUAL;
TRUNC(<n1>,<n2>) 功能類似ROUND函數(shù)。但不做四舍五入。

SELECT TRUNC(123.456,2),TRUNC(123.456,-1) FROM DUAL;

分別返回結(jié)果:123.45、120。

 

VSIZE(n) 返回?cái)?shù)字n的存儲(chǔ)字節(jié) SELECT VSIZE(123) FROM DUAL;
日期函數(shù)(日期可以進(jìn)行算術(shù)運(yùn)算) SYSDATE 返回相同日期 SELECT SYSDATE FROM DUAL;
ADD_MONTHS(<d>,<i>) 返回日期d 加上i個(gè)月后的新日期(i正可負(fù))。

SELECT SYSDATE, ADD_MONTHS(SYSDATE,2),

ADD_MONTHS(SYSDATE,-2)

FROM DUAL;

 

LAST_DAY(<d>) 返回日期d所在的月的最后一天。 SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL
MONTHS_BETWEEN(<d1>,<d2>) 返回日期d1d2大多少月數(shù)。 SELECT MONTHS_BETWEEN(’19-Dec-1999’,’19-Mar-2000’ FROM DUAL;
NEW_TIME(<d>,<tz1>,<tz2>) 將時(shí)區(qū)tz1的時(shí)間d,轉(zhuǎn)換為時(shí)區(qū)tz2里的時(shí)間。 SELECT SYSDATE,NEW_TIME(SYSDATE,’CDT’,’PDT’) FROM DUAL;
NEXT_DAY(<d>,<dow>) 返回日期d后的第一個(gè)dow。(dowday of week) SELECT NEXT_DAY(SYSDATE,’Monday’) FROM DUAL;
常用轉(zhuǎn)換函數(shù) TO_CHAR(<x>[,<fmt>[,<nlsparm>]]) x轉(zhuǎn)換成字符串。(參數(shù)含義請看ORACLE的聯(lián)機(jī)幫助) SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD’) FROM DUAL;
TO_NUMBER(<c>[,<fmt>[,<nlsparm>]]) 將字符串c轉(zhuǎn)換成數(shù)字。(參數(shù)含義請看ORACLE的聯(lián)機(jī)幫助) SELECT TO_NUMBER(‘123’) FROM DUAL;

TO_DATE(<c>[,<fmt>[,<nlsparm>]])

(常見的日期格式請查聯(lián)機(jī)幫助。)

將字符串c轉(zhuǎn)換成日期。 SELECT TO_DATE(’19-Mar-99’,’DD-Mon-YYYY’) FROM DUAL;
兩個(gè)重要函數(shù)

DECODE(<x>,<m1>,<r1>[,<m2>,

<r2…>][,<d>])

(DECODE函數(shù)功能非常強(qiáng)大,請仔細(xì)玩味。)

 

一個(gè)功能非常強(qiáng)大的函數(shù),它使得SQL非常高效。它的功能類似于一系列的if…then…else語句。

SELECT sid,serial#,username,

DECODE(command

,0,’None’

,2,’Insert’

,3,’Select’

,6,’Update’

,7,’Delete’

,8,’Drop

,’Other’) cmd

FROM V$SESSION WHERE type<>’BACKGROUND’;

 

NVL(x1,x2)

注意ORACLE中的NULL值,注意該函數(shù)作用

 

如果x1為空返回x2,否則返回x1。 SELECT NVL(ename,’無姓名’)  FROM  EMP;

分組函數(shù)

  AVG([{DISTINCT|ALL}]<n>) 求返回行的指定列的平均值

SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal)

FROM SCOTT.EMP;

 

COUNT({*|[DISTINCT|ALL]}<x>) 統(tǒng)計(jì)返回的行數(shù)

SELECT COUNT (*), COUNT(DISTINCT mgr),COUNT(mgr)

FROM SCOTT.EMP

 

MAX([{DISTINCT|ALL}]<x>) 求返回行的指定列的最大值 SELECT MAX(sal),MAX(DISTINCT sal) FROM EMP;
MIN([{DISTINCT|ALL}]<x>) 求返回行的指定列的最小值 SELECT MIN(sal),MIN(DISTINCT sal) FROM EMP;
STDDEV([{DISTINCT|ALL}]<x>) 求返回行的指定列的標(biāo)準(zhǔn)方差 SELECT STDDEV(sal),STDDEV(DISTINCT sal) FROM EMP;
SUM() 求返回行的指定列的和 SELECT SUM(sal) FROM EMP;
VARIANCE() 求返回行的指定列的差異值  

 

 

     注意:

A、 分組函數(shù)不會(huì)處理空值,也不會(huì)返回空值

B、  所有的分組函數(shù)既可以作用于指定列的所有值上,也可以只作用于指定列的差異列值上;

C、 當(dāng)指定ALL選項(xiàng)時(shí),分組函數(shù)作用于所有非空列值行上。當(dāng)指定DISTINCT選項(xiàng)時(shí),分組函數(shù)只作用于非空的且具有不同列值的行上(即,重復(fù)列值的行只計(jì)算一行);

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多