Oracle的SQL函數(shù)分為單行函數(shù)和多行函數(shù)。單行函數(shù)只對單條記錄有效,多行函數(shù)對多條記錄有效。
單行函數(shù)包括,字符、數(shù)字、日期、轉(zhuǎn)換和普通函數(shù)。
字符函數(shù)舉例:
全小寫 LOWER('SQL Course') sql course
全大寫 UPPER('SQL Course') SQL COURSE
首字母大寫 INITCAP('SQL Course') Sql Course
拼接 CONCAT('Good', 'String') GoodString
取子串 SUBSTR('String',1,3) Str
求長度 LENGTH('String') 6
數(shù)字函數(shù)舉例:
ROUND -- 對數(shù)值進(jìn)行四舍五入操作
TRUNC -- 截斷。注意截斷和舍入的位數(shù),可以是負(fù)數(shù)。
ROUND (45.923, 2) 45.92
ROUND (45.923, 0) 46
ROUND (45.923, -1) 50
TRUNC (45.923, 2) 45.92
TRUNC (45.923) 45
TRUNC (45.923, -1) 40
MOD -- 返回兩數(shù)相除的余數(shù)
MOD(1600, 300) -- 100
日期函數(shù):
Oracle將日期按照內(nèi)部格式將日期存成以下七個字節(jié)–世紀(jì)、年、月、日、時、分、秒。在Oracle中日期缺省的顯示格式為:DD - MON - YY 。
可以使用系統(tǒng)變量 SYSDATE 獲取系統(tǒng)時間。查看 SYSDATE時,可以使用虛擬表DUAL。
舉例:
求兩個日期間有多少個月份 MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 1.9774194
在日期上加指定的月數(shù) ADD_MONTHS('11-JAN-94',6) '11-JUL-94'
下一個星期幾是什么時候 NEXT_DAY('01-SEP-95','FRIDAY') '08-SEP-95'
某月最后一天 LAST_DAY('01-SEP-95') '30-SEP-95'
把日期四舍五入到月份 ROUND('25-MAY-95','MONTH') 01-JUN-95
ROUND('25-MAY-95 ','YEAR') 01-JAN-95
把日期截斷到月份 TRUNC('25-MAY-95 ','MONTH') 01-MAY-95
TRUNC('25-MAY-95 ','YEAR') 01-JAN-95
轉(zhuǎn)換函數(shù)
TO_CHAR 將數(shù)字或日期轉(zhuǎn)換為字符串
TO_NUMBER 將字符串轉(zhuǎn)換成數(shù)字
TO_DATE 將字符串轉(zhuǎn)換成日期
在轉(zhuǎn)換函數(shù)中會使用格式串
TO_CHAR(date, 'fmt')
格式串包含在''中, 大小寫敏感, 可以是任意有效的日期
格式
格式串:
YYYY 表示完整的四位數(shù)字年
YEAR 表示英文拼寫的年
MM 表示兩位數(shù)字月
MONTH 表示英文全拼的年
DY 表示三位縮寫的星期
DAY 表示英文全拼的星期
一些特殊用法:
時間格式
HH24:MI:SS AM 15:45:32 PM
在格式串中加入字符串
DD " of " MONTH 12 of OCTOBER
用后綴拼出整個日期
ddspth fourteenth
TO_CHAR(number, 'fmt')
使用此函數(shù)將數(shù)字轉(zhuǎn)換成數(shù)字
9 表示數(shù)字
0 強(qiáng)制為0
$ 設(shè)置美元符號
L 使用當(dāng)前字符集的貨幣符號
. 小數(shù)點(diǎn)
, 千位分隔符
可以使用TO_NUMBER將字符串轉(zhuǎn)換成數(shù)字
可以使用TO_DATE將字符串轉(zhuǎn)換成格式日期
TO_DATE ('10 September 1992', 'dd Month YYYY')
使用格式串
TO_DATE(char [, 'fmt'])
普通函數(shù)
NULL值處理函數(shù)
NVL (expr1, expr2)
如果expr1為NULL,返回expr2
NVL2 (expr1, expr2, expr3)
如果expr1為非空,則返回expr2,如果expr1為NULL,則返回expr3
NULLIF (expr1, expr2)
如果expr1=expr2,返回NULL,否則返回expr1
COALESCE (expr1, expr2, ..., exprn)
返回表達(dá)式列表中的第一個非空表達(dá)式
條件表達(dá)式,用case表達(dá)式或decode實(shí)現(xiàn)條件邏輯
CASE表達(dá)式
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
decode函數(shù)
DECODE(col|expression, search1, result1
[, search2,result2,...,]
[, default])
分組函數(shù):
AVG (DISTINCT|ALL|n)
COUNT (DISTINCT|ALL|expr|*)
MAX (DISTINCT|ALL|expr)
MIN (DISTINCT|ALL|expr)
STDDEV (DISTINCT|ALL|n)
SUM (DISTINCT|ALL|n)
VARIANCE (DISTINCT|ALL|n)