Oracle 常用SQL函數

Oracle的SQL函數分爲單行函數和多行函數。單行函數只對單條記錄有效,多行函數對多條記錄有效。


單行函數包括,字符、數字、日期、轉換和普通函數。


字符函數舉例:

全小寫  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

 
數字函數舉例:
ROUND -- 對數值進行四捨五入操作
TRUNC -- 截斷。注意截斷和舍入的位數,可以是負數。
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 -- 返回兩數相除的餘數

MOD(1600, 300) -- 100


日期函數:
•Oracle將日期按照內部格式將日期存成以下七個字節-世紀、年、月、日、時、分、秒。•在Oracle中日期缺省的顯示格式爲:DD - MON - YY 。•可以使用系統變量  SYSDATE 獲取系統時間•。查看 SYSDATE時,可以使用虛擬表DUAL。

舉例:
求兩個日期間有多少個月份   MONTHS_BETWEEN('01-SEP-95','11-JAN-94')      1.9774194
在日期上加指定的月數         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

 
轉換函數

TO_CHAR 將數字或日期轉換爲字符串
TO_NUMBER 將字符串轉換成數字
TO_DATE 將字符串轉換成日期
在轉換函數中會使用格式串

 
TO_CHAR(date, 'fmt')
格式串包含在''中, 大小寫敏感, 可以是任意有效的日期
格式
格式串:
YYYY 表示完整的四位數字年
YEAR 表示英文拼寫的年
MM 表示兩位數字月
MONTH 表示英文全拼的年
DY 表示三位縮寫的星期
DAY 表示英文全拼的星期

 
一些特殊用法:
時間格式
            HH24:MI:SS AM  15:45:32 PM
在格式串中加入字符串
            DD " of " MONTH  12 of OCTOBER
用後綴拼出整個日期
            ddspth  fourteenth

 
TO_CHAR(number, 'fmt')
使用此函數將數字轉換成數字
    9  表示數字
    0  強制爲0
    $  設置美元符號
    L  使用當前字符集的貨幣符號
    .  小數點
    ,  千位分隔符

 
可以使用TO_NUMBER將字符串轉換成數字
可以使用TO_DATE將字符串轉換成格式日期
TO_DATE ('10 September 1992', 'dd Month YYYY')


使用格式串
TO_DATE(char  [, 'fmt'])

 

 
普通函數
NULL值處理函數


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)
    返回表達式列表中的第一個非空表達式
 

 
條件表達式,用case表達式或decode實現條件邏輯
CASE表達式
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函數
DECODE(col|expression, search1, result1
 [, search2,result2,...,]
       [, default])

分組函數:
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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章