單行函數(shù)
|
分類(lèi)
|
函數(shù)
|
功能
|
示例
|
字符函數(shù)
|
LPAD(<c1>,<i>[,<c2>])
|
在字符串
c1
的左邊添加字符串
c2
直到
c1
字符串的長(zhǎng)度等于
i
。
|
SELECT? LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpad
FROM DUAL;
|
RPAD(<c1>,<i>[,<c2>])
|
在字符串
c1
的右邊添加字符串
c2
直到
c1
字符串的長(zhǎng)度等于
i
。
|
LOWER(<c1>)
|
把字符串
c1
轉(zhuǎn)換為小寫(xiě)
|
SELECT LOWER(ename)? one,UPPER(ename) two, INITCAP(ename) FROM EMP;
|
UPPER(<c1>)
|
把字符串
c1
轉(zhuǎn)換為大寫(xiě)
|
INITCAP(<c1>)
|
把
c1
字符串的每一個(gè)單詞的第一個(gè)字母轉(zhuǎn)換成大寫(xiě)字母
|
LENGTH(<c1>)
|
返回字符串
c1
的長(zhǎng)度
|
SELECT LENGTH(‘How are you’) FROM DUAL;
|
SUBSTR(<c1>,<i>[,<j>])
|
返回字符串
c1
中從第
i
個(gè)位置開(kāi)始的
j
個(gè)字符(向右)。如果省略
j
,則返回
c1
中從第
i
個(gè)位置開(kāi)始的所有字符。如果
j
為負(fù),則返回字符串
c1
中從第
i
個(gè)位置開(kāi)始的
j
個(gè)字符(向左)。
|
SELECT SUBSTR(‘Hello,World’,1,5) FROM DUAL;
|
INSTR(<c1>,<c2>[,<i>[,<j>]])
|
在
c1
中從位置
i
開(kāi)始查找
c2
在
c1
中出第
j
次的位置,
i
可以為負(fù)
(
此時(shí),從
c1
的尾部開(kāi)始
)
。
|
SELECT INSTR(‘Mississippi’,’i’,3,3) FROM DUAL;
返回結(jié)果
11
。
SELECT INSTR(‘Mississippi’,’i’,-2,3) FROM DUAL;
返回結(jié)果
2
。
|
LTRIM(<c1>,<c2>)
|
從
c1
前面開(kāi)始去掉出現(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
后面開(kāi)始去掉出現(xiàn)在
c2
的中任何前導(dǎo)字符集。
|
數(shù)學(xué)函數(shù)
|
ABS(<n>)
|
返回
n
的絕對(duì)值
|
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é)果:
12300
,
12345.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>)
|
返回
n1
模
n2
后的余數(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>)
|
功能類(lèi)似
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>)
|
返回日期
d1
比
d2
大多少月數(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
。
(dow
:
day of week)
|
SELECT NEXT_DAY(SYSDATE,’Monday’) FROM DUAL;
|
常用轉(zhuǎn)換函數(shù)
|
TO_CHAR(<x>[,<fmt>[,<nlsparm>]])
|
將
x
轉(zhuǎn)換成字符串。(參數(shù)含義請(qǐng)看
ORACLE
的聯(lián)機(jī)幫助)
|
SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD’) FROM DUAL;
|
TO_NUMBER(<c>[,<fmt>[,<nlsparm>]])
|
將字符串
c
轉(zhuǎn)換成數(shù)字。(參數(shù)含義請(qǐng)看
ORACLE
的聯(lián)機(jī)幫助)
|
SELECT TO_NUMBER(‘123’) FROM DUAL;
|
TO_DATE(<c>[,<fmt>[,<nlsparm>]])
(
常見(jiàn)的日期格式請(qǐng)查聯(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)大,請(qǐng)仔細(xì)玩味。
)
|
一個(gè)功能非常強(qiáng)大的函數(shù),它使得
SQL
非常高效。它的功能類(lèi)似于一系列的
if…then…else
語(yǔ)句。
|
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,’
無(wú)姓名
’)? 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()
|
求返回行的指定列的差異值
|
|