首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 內建函數大全:單列函數與群組函數分類詳解

     編輯:Oracle 資料庫相關知識

函數分類總覽

  • 單列函數: 每列輸入產生一列輸出,可用於 SELECT、WHERE、ORDER BY、SET、VALUES 子句
  • 群組函數: 多列輸入產生單一結果,常搭配 GROUP BY、HAVING 使用

單列字元函數

函數說明範例
UPPER/LOWER/INITCAP大小寫轉換/首字大寫UPPER('oracle') → 'ORACLE'
SUBSTR(str, pos, len)擷取子字串 (位置從 1 起算,負數從尾部)SUBSTR('Hello', 2, 3) → 'ell'
INSTR(str, substr, pos, occ)搜尋子字串位置INSTR('Mississippi', 'i', 1, 3) → 11
LENGTH/LENGTHB字元長度/位元組長度LENGTH('中文') → 2
LPAD/RPAD(str, n, pad)左/右補齊至長度 nLPAD('9', 5, '0') → '00009'
LTRIM/RTRIM/TRIM移除前導/尾隨/兩側字元TRIM(' abc ') → 'abc'
REPLACE(str, old, new)字串替換REPLACE('Jack', 'J', 'B') → 'Back'
TRANSLATE(str, from, to)字元對照替換 (一對一)TRANSLATE('123', '12', 'ab') → 'ab3'
CONCAT / ||字串連接'A' || 'B' → 'AB'
ASCII/CHR字元與 ASCII 碼互轉ASCII('A') → 65, CHR(65) → 'A'
SOUNDEX發音相似度編碼 (英文)SOUNDEX('Smith') = SOUNDEX('Smythe')

單列數值函數

函數說明
ROUND(n, m)四捨五入到小數點右 m 位 (m 可負)
TRUNC(n, m)截斷到小數點右 m 位
CEIL/FLOOR大於等於/小於等於 n 的最小/最大整數
MOD(m, n)餘數
POWER(m, n)m 的 n 次方
SQRT/EXP/LN/LOG平方根/指數/自然對數/指定底對數
SIN/COS/TAN/ASIN/ACOS/ATAN三角函數 (弧度制)
SINH/COSH/TANH雙曲線函數
SIGN正負號 (-1/0/1)
ABS絕對值

單列日期函數

函數說明
SYSDATE / CURRENT_DATE伺服器/Session 當前日期
ADD_MONTHS(d, n)加減 n 個月
MONTHS_BETWEEN(d1, d2)月份差
LAST_DAY(d)該月最後一天
NEXT_DAY(d, 'DAY')下一個指定週名的日期
ROUND/TRUNC(d, 'fmt')日期四捨五入/截斷 (fmt: YEAR, MONTH, DAY...)
EXTRACT(field FROM d)擷取日期欄位

轉換函數

函數說明
TO_CHAR(date/number, fmt, nls)日期/數值 → 字串
TO_DATE(char, fmt, nls)字串 → 日期
TO_NUMBER(char, fmt, nls)字串 → 數值
CAST(expr AS type)ANSI 標準型別轉換
DECODE(expr, s1, r1, s2, r2, ..., def)等值比較分支 (若 expr=s1 則 r1...)
CASE expr WHEN v1 THEN r1 ... ELSE def END標準條件表達式 (支援範圍/複合條件)
NVL(expr1, expr2)expr1 為 NULL 回傳 expr2
NVL2(expr1, e2, e3)expr1 不為 NULL 回傳 e2 否則 e3
COALESCE(e1, e2, ...)回傳第一個非 NULL 運算式
NULLIF(e1, e2)e1=e2 回傳 NULL 否則 e1

群組函數

函數說明備註
COUNT(*) / COUNT(expr)列數 / 非 NULL 個數COUNT(*) 含 NULL 列
SUM/AVG/MIN/MAX總和/平均/最小/最大忽略 NULL
STDDEV/VARIANCE標準差/變異數統計分析用
LISTAGG(expr, ',') WITHIN GROUP (ORDER BY col)字串彙總 (11g+)群組串聯利器
MEDIAN/PERCENTILE_CONT中位數/百分位數分析函數語法

NULL 處理黃金法則

  1. 算術運算遇 NULL 結果為 NULL
  2. 多數函數參數為 NULL 回傳 NULL
  3. 例外:NVL, NVL2, COALESCE, DECODE, REPLACE, CONCAT 可處理 NULL
  4. 群組函數自動忽略 NULL (COUNT(*) 除外)
  5. 比較 col = NULL 永遠為 UNKNOWN,必須用 col IS NULL

嵌套函數執行順序

由內而外、由左而右。例:UPPER(SUBSTR(NVL(name,'NA'),1,10)) 先 NVL → SUBSTR → UPPER。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved