Oracle 內建豐富的數學函數,支援基礎算術、指數對數、三角函數、雙曲函數與反三角函數。本文系統整理所有核心數值函數的語法、參數、返回值與實戰範例,適合開發與分析查詢時速查。
| 函數 | 功能 | 範例 | 結果 |
ABS(x) | 絕對值 | ABS(-100) | 100 |
SIGN(x) | 正負號:正→1、負→-1、零→0 | SIGN(-100), SIGN(0), SIGN(100) | -1, 0, 1 |
MOD(x, y) | 餘數 (x 除以 y) | MOD(23, 8), MOD(24, 8) | 7, 0 |
ROUND(x[, y]) | 四捨五入,y 為小數位 (可負) | ROUND(5555.6666, 2), ROUND(5555.6666, -2), ROUND(5555.6666) | 5555.67, 5600, 5556 |
TRUNC(x[, y]) | 截斷 (不四捨五入),語法同 ROUND | TRUNC(5555.6666, 2), TRUNC(5555.6666, -2) | 5555.66, 5500 |
SQRT(x) | 平方根 (x≥0) | SQRT(64), SQRT(10) | 8, 3.16227766 |
二、指數與對數
| 函數 | 功能 | 範例 | 結果/說明 |
POWER(x, y) | x 的 y 次方 | POWER(2.5, 2), POWER(20, -1) | 6.25, 0.05 |
EXP(y) | e 的 y 次方 (e≈2.71828) | EXP(3), EXP(0), EXP(-3) | 20.0855, 1, 0.049787 |
LN(y) | 自然對數 (以 e 為底),y>0 | LN(20.0855369), LN(0.049787) | 3, -3 |
LOG(x, y) | 以 x 為底 y 的對數,x>0, y>0 | LOG(16, 2), 1/LOG(16, 4) | 0.25, 2 (驗證換底公式) |
關鍵關係:
EXP 與 LN 互為反函數:LN(EXP(y)) = y
POWER 與 LOG 關係:z = POWER(x, y) → y = 1 / LOG(z, x) (z, x > 0)
三、三角函數 (參數單位:弧度)
| 函數 | 功能 | 範例 | 結果 |
SIN(x) | 正弦 | SIN(1.57079) | 1 (≈ π/2) |
COS(x) | 餘弦 | COS(-3.1415927) | -1 (≈ -π) |
TAN(x) | 正切 | TAN(20), TAN(10) | 2.237, 0.648 |
ASIN(x) | 反正弦 (-1≤x≤1) | ASIN(0.5) | 0.5236 (≈ π/6) |
ACOS(x) | 反餘弦 (-1≤x≤1) | ACOS(-1) | 3.14159 (≈ π) |
ATAN(x) | 反正切 | ATAN(1) | 0.7854 (≈ π/4) |
四、雙曲函數
| 函數 | 功能 | 範例 | 結果 |
SINH(x) | 雙曲正弦 | SINH(20) | 242582598 |
COSH(x) | 雙曲餘弦 | COSH(20) | 242582598 |
TANH(x) | 雙曲正切 | TANH(20) | 1 (趨近 1) |
五、角度與弧度轉換工具函數
-- 度轉弧度
CREATE OR REPLACE FUNCTION deg2rad(p_deg NUMBER) RETURN NUMBER IS
BEGIN RETURN p_deg * ACOS(-1) / 180; END;
-- 弧度轉度
CREATE OR REPLACE FUNCTION rad2deg(p_rad NUMBER) RETURN NUMBER IS
BEGIN RETURN p_rad * 180 / ACOS(-1); END;
-- 使用範例
SELECT SIN(deg2rad(90)) FROM dual; -- 1
SELECT rad2deg(ASIN(1)) FROM dual; -- 90
六、常見應用模式
- 科學計算:
POWER/EXP/LOG 組合實現複雜公式
- 財務計算:
ROUND(amount, 2) 標準化金額精度
- 分頁/分桶:
MOD(id, 100) 實現資料分片
- 地理空間:三角函數計算距離、方位角 (搭配
SDO_GEOMETRY 更專業)
- 隨機採樣:
MOD(ABS(DBMS_RANDOM.RANDOM), 100) = 0 近似 1% 採樣
掌握這些函數的定義域、值域與精度特性,能在 SQL 層面直接完成大量數學運算,減少應用層往返,提升效能與一致性。
- 上一篇文章: Oracle PL/SQL 原生編譯 (Native Compilation) 效能實測:開啟方式與實際提升分析
- 下一篇文章: Oracle 資料庫補丁查詢指南:v$version 與 OPatch lsinventory 雙重驗證
Copyright ©
程式碼之家 All Rights Reserved