DB2 SQL 內建函數分為「彙總函數」與「純量函數」兩大類。前者對一組值運算回傳單一結果,後者對單一值運算回傳單一值。本文整理常用函數定義與應用場景,供查詢撰寫快速參考。
作用於群組資料列,常搭配 GROUP BY 使用。
| 函數 | 說明 | 範例 |
|---|---|---|
AVG(expr) | 回傳群組數值平均值(總和/筆數) | SELECT AVG(salary) FROM emp |
COUNT(*) / COUNT(expr) | 回傳列數或非 NULL 個數 | SELECT COUNT(*) FROM emp |
MAX(expr) | 回傳群組最大值 | SELECT MAX(hiredate) FROM emp |
MIN(expr) | 回傳群組最小值 | SELECT MIN(salary) FROM emp |
SUM(expr) | 回傳群組數值總和 | SELECT SUM(sales) FROM orders |
STDDEV(expr) | 回傳標準差 | SELECT STDDEV(score) FROM exam |
VARIANCE(expr) | 回傳變異數 | SELECT VARIANCE(price) FROM product |
SELECT COUNT(DISTINCT deptno) FROM emp; -- 不重複部門數
逐列運算,回傳單一值,可用於 SELECT、WHERE、SET 等子句。
| 分類 | 函數 | 說明 |
|---|---|---|
| 數學 | ABS(n) | 絕對值 |
MOD(n, m) | 餘數 | |
SQRT(n) | 平方根 | |
POWER(n, m) | n 的 m 次方 | |
RAND() | 隨機浮點數 0~1 | |
| 字串 | SUBSTR(str, pos, len) | 擷取子字串 |
CONCAT(str1, str2) | 串接字串(或用 ||) | |
UPPER / LOWER | 大小寫轉換 | |
TRIM / LTRIM / RTRIM | 移除空白 | |
LENGTH(str) | 位元組長度(圖形字串為雙位元組字元數) | |
HEX(expr) | 回傳十六進位表示 | |
| 日期時間 | YEAR(dt) | 擷取年份 |
MONTH(dt) | 擷取月份 | |
DAY(dt) | 擷取日期 | |
CURRENT DATE / TIME / TIMESTAMP | 系統當前日期/時間/時間戳 | |
DAYS(dt) | 日期轉整數(自 0001-01-01 起算天數) | |
| 轉換/條件 | CAST(expr AS type) | 資料型態轉換 |
COALESCE(v1, v2, ...) | 回傳第一個非 NULL 值 | |
NULLIF(v1, v2) | 若 v1=v2 則回傳 NULL,否則回傳 v1 | |
CASE WHEN ... THEN ... ELSE ... END | 條件邏輯運算 |
-- 每部門最高薪資與平均薪資
SELECT deptno, MAX(salary) AS max_sal, AVG(salary) AS avg_sal
FROM emp
GROUP BY deptno;
-- 字串清洗與日期篩選
SELECT UPPER(TRIM(ename)) AS name, HIREDATE
FROM emp
WHERE YEAR(HIREDATE) = 2023
AND MOD(EMPNO, 2) = 0;
熟練掌握彙總與純量函數,能大幅簡化 SQL 邏輯、提升查詢可讀性與效能。建議收藏本表,撰寫複雜報表查詢時隨時查閱。