首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 常用函數完整參考手冊:單列、群組、轉換與進階函數分類詳解

     編輯:Oracle 資料庫基礎

函數分類總覽

  • 單列函數:逐列運算,可用於 SELECT/WHERE/ORDER BY/SET/VALUES 等子句
  • 群組函數:多列彙總單一結果,搭配 GROUP BY/HAVING 使用

單列字元函數

函數說明範例
ASCII(c)回傳第一字元 ASCII 碼ASCII('A') → 65
CHR(n)ASCII 反函數CHR(65) → 'A'
CONCAT(c1,c2)字串連接 (同 ||)CONCAT('A','B') → 'AB'
INITCAP(c)每字首大寫INITCAP('hello world') → 'Hello World'
INSTR(c1,c2[,pos[,occur]])搜尋子字串位置INSTR('Mississippi','i',3,3) → 11
LENGTH(c)字串長度LENGTH('Oracle') → 6
LOWER/UPPER(c)大小寫轉換UPPER('oracle') → 'ORACLE'
LPAD/RPAD(c1,n[,c2])左/右填充至長度 nLPAD('5',3,'0') → '005'
LTRIM/RTRIM/TRIM(c1[,c2])移除首/尾/兩側字元TRIM(' abc ') → 'abc'
REPLACE(c1,c2[,c3])取代字串REPLACE('Jack','J','B') → 'Back'
SUBSTR(c,pos[,len])擷取子字串SUBSTR('Oracle',1,3) → 'Ora'
SOUNDEX(c)發音相似編碼SOUNDEX('Smith') = SOUNDEX('Smythe')
TRANSLATE(c,from,to)字元對應取代TRANSLATE('123','12','AB') → 'AB3'

單列數值函數

函數說明
ABS(n)絕對值
CEIL/FLOOR(n)無條件進位/捨去
ROUND/TRUNC(n[,precision])四捨五入/截斷 (precision 可負數)
MOD(m,n)餘數
POWER(m,n)m 的 n 次方
SQRT(n)平方根
SIGN(n)正負號 (-1/0/1)
EXP/LN/LOG(m,n)指數/自然對數/以 m 為底對數
三角函數SIN/COS/TAN/ASIN/ACOS/ATAN/SINH/COSH/TANH (參數為弧度)

單列日期函數

函數說明
SYSDATE當前日期時間
ADD_MONTHS(d,n)日期加減月份
MONTHS_BETWEEN(d1,d2)兩日期月份差 (含小數)
LAST_DAY(d)該月最後一天
NEXT_DAY(d,weekday)指定星期幾的下一個日期
ROUND/TRUNC(d[,fmt])日期四捨五入/截斷 (fmt: YEAR/MONTH/DD 等)
NEW_TIME(d,zone1,zone2)時區轉換

單列轉換函數

函數說明
TO_CHAR(d/n[,fmt[,nls]])日期/數值 → 字串
TO_DATE(c[,fmt[,nls]])字串 → 日期
TO_NUMBER(c[,fmt[,nls]])字串 → 數值
CHARTOROWID / ROWIDTOCHARROWID ↔ CHAR
HEXTORAW / RAWTOHEX16進位 ↔ RAW
CONVERT(c,dest_charset[,src_charset])字符集轉換
TO_MULTI_BYTE / TO_SINGLE_BYTE單/多位元組字元轉換

其他單列函數

  • NVL(expr1,expr2):expr1 為 NULL 回傳 expr2,處理 NULL 運算必備
  • DECODE(expr,search1,result1[,search2,result2...][,default]):IF-THEN-ELSE 邏輯
  • CASE ... WHEN ... THEN ... ELSE ... END:ANSI 標準條件邏輯 (建議優先使用)
  • GREATEST/LEAST(list):回傳最大/最小值
  • DUMP(expr[,fmt[,start[,len]]]):內部儲存表示
  • VSIZE(expr):位元組大小
  • USER/UID/USERENV(param):當前用戶/ID/Session 資訊
  • EMPTY_BLOB()/EMPTY_CLOB()/BFILENAME(dir,file):LOB 初始化

群組函數 (彙總函數)

群組函數忽略 NULL 值 (COUNT(*) 除外)。DISTINCT/ALL 對 MAX/MIN 無影響。

GROUP BY / HAVING 進階用法


-- 分組統計
SELECT state, COUNT(*) zip_count FROM zip_codes GROUP BY state;

-- 結合排序
SELECT state, COUNT(*) FROM zip_codes GROUP BY state ORDER BY COUNT(*) DESC;

-- HAVING 過濾群組 (不可用 WHERE)
SELECT sales_clerk, SUM(sale_amount)
FROM gross_sales
WHERE sales_dept = 'OUTSIDE'
GROUP BY sales_clerk
HAVING SUM(sale_amount) > 10000;

函數嵌套與優先順序

由內而外、由左而右執行。常用於 DECODE/CASE 邏輯判斷。例如:


SELECT UPPER(SUBSTR(ename,1,3)) FROM emp; -- 取前三字並轉大寫
SELECT NVL(TO_CHAR(comm),'N/A') FROM emp; -- NULL 顯示 N/A

NULL 處理黃金法則

  • 任何運算遇 NULL 結果為 NULL
  • 僅 NVL, DECODE, REPLACE, CONCAT, DUMP 在引數為 NULL 時可能回傳非 NULL
  • 聚合前務必用 NVL(col,0) 處理數值欄位
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數說明
AVG([DISTINCT|ALL] expr)平均值
COUNT({*|DISTINCT|ALL} expr)筆數
MAX/MIN([DISTINCT|ALL] expr)最大/最小值
SUM([DISTINCT|ALL] expr)總和
STDDEV/VARIANCE([DISTINCT|ALL] expr)標準差/變異數