EXP() 函數 (SQL EXP() Function)
EXP() 函數用於計算以自然常數 e(約等於 2.71828)為底的指數值。換句話說,EXP(x) 返回 e 的 x 次方(e^x)。
自然常數 e 是數學中非常重要的常數,在複利計算、機率統計、科學計算等領域廣泛使用。
這個函數在所有主流資料庫系統中(MySQL、SQL Server、PostgreSQL、Oracle、SQLite)的語法和行為都是一致的。
EXP() 語法 (Syntax)
EXP(exponent)
- exponent:指數值,即 e 要乘方的次數。
EXP() 函數用法範例 (Example)
基本範例
SELECT EXP(1); -- 結果:2.718281828459045(e 的值)
SELECT EXP(0); -- 結果:1(任何數的 0 次方都是 1)
SELECT EXP(2); -- 結果:7.38905609893065(e²)
SELECT EXP(-1); -- 結果:0.36787944117144233(e⁻¹ = 1/e)
SELECT EXP(10); -- 結果:22026.465794806718
計算連續複利
連續複利公式為 A = P × e^(rt),其中:
- P:本金
- r:年利率
- t:時間(年)
- A:最終金額
SELECT
principal,
annual_rate,
years,
ROUND(principal * EXP(annual_rate * years), 2) AS final_amount
FROM
investments;
| principal | annual_rate | years | final_amount |
|---|---|---|---|
| 10000 | 0.05 | 3 | 11618.34 |
| 50000 | 0.03 | 5 | 58091.82 |
計算機率密度(常態分佈)
常態分佈的機率密度函數中使用到 EXP():
-- 計算標準常態分佈在 x 點的機率密度
SELECT
x,
(1 / SQRT(2 * PI())) * EXP(-0.5 * POWER(x, 2)) AS probability_density
FROM
data_points;
計算衰減
指數衰減公式 N = N₀ × e^(-λt):
SELECT
initial_amount,
decay_constant,
time_elapsed,
ROUND(initial_amount * EXP(-decay_constant * time_elapsed), 4) AS remaining_amount
FROM
decay_data;
對數的逆運算
EXP() 是 LN()(自然對數)的逆運算:
SELECT LN(10); -- 結果:2.302585092994046
SELECT EXP(2.302585); -- 結果:約 10
-- 驗證
SELECT EXP(LN(100)); -- 結果:100
SELECT LN(EXP(5)); -- 結果:5
計算成長率
假設每年成長率為 r,經過 t 年後的成長倍數:
SELECT
product_name,
growth_rate,
years,
ROUND(EXP(growth_rate * years), 4) AS growth_multiple
FROM
growth_forecast;
EXP() 與 POWER() 的關係
EXP(x) 等同於 POWER(e, x),但由於 SQL 中沒有直接表示 e 的常數,通常使用 EXP(1) 來取得 e 的值:
-- 以下兩個表達式結果相同
SELECT EXP(5); -- 結果:148.41315910257657
SELECT POWER(EXP(1), 5); -- 結果:148.41315910257657
相關函數
- LOG() / LN():對數運算,為 EXP() 的逆運算。
- POWER():任意底數的次方運算。
| 函數 | 功能 | 與 EXP 的關係 |
|---|---|---|
| EXP(x) | e 的 x 次方 | - |
| LN(x) | x 的自然對數 | LN(EXP(x)) = x |
| LOG(x) | x 的對數(底數視資料庫) | 見 LOG 文章 |
注意事項
EXP(NULL)的結果是NULL。- 當指數值非常大時,結果可能超出資料型別的範圍(溢位),例如
EXP(1000)會導致錯誤。 - 當指數值是很大的負數時,結果會趨近於 0,可能會因精度問題而顯示為 0。