| 分類 | 函數 | 語法 | 示例 | 結果 | 說明 |
|---|---|---|---|---|---|
| 基礎常數 | ABS | ABS(x) | ABS(-0.5) | 0.5 | 絕對值 |
| PI | PI() | PI() | 3.141593 | 圓周率,雙精度 | |
| 根/模 | SQRT | SQRT(x) | SQRT(3) | 1.73205... | 平方根,x≥0否則NULL |
| MOD | MOD(x,y) | MOD(13,4) | 1 | 取模,同 x%y | |
| 取整 | CEIL / CEILING | CEIL(x) | CEIL(2.3), CEIL(-2.3) | 3, -2 | ≥x的最小整數(向上取整) |
| FLOOR | FLOOR(x) | FLOOR(2.3), FLOOR(-2.3) | 2, -3 | ≤x的最大整數(向下取整) | |
| ROUND | ROUND(x [,d]) | ROUND(2.5), ROUND(2.53,1) | 3, 2.5 | 四捨五入,d為小數位(默認0) | |
| TRUNCATE | TRUNCATE(x,d) | TRUNCATE(2.55,1) | 2.5 | 截斷不四捨五入,d必填 | |
| 隨機數 | RAND | RAND([seed]) | RAND(), RAND(2) | 0.8269..., 0.6555... | 0-1隨機數;seed固定則序列固定 |
| 符號 | SIGN | SIGN(x) | SIGN(-2), SIGN(0), SIGN(2) | -1, 0, 1 | 負/零/正 |
| 冪運算 | POW / POWER | POW(x,y) | POW(3,2) | 9 | x的y次方 |
| 指數/對數 | EXP / LN / LOG | EXP(1), LN(2), LOG(10,100) | 2.718..., 0.693..., 2 | e^x, 自然對數, 以10為底對數 | |
| 三角函數 | SIN/COS/TAN... | SIN(PI()/2) | 1 | 弧度制,角度需 * PI()/180 |
ROUND(2.5) → 2 (偶數進位)
ROUND(3.5) → 4
ROUND(2.55, 1) → 2.6 (但浮點表示誤差可能導致意外)
建議:金融計算**禁用ROUND**,用DECIMAL精確類型 + 應用層BigDecimal控制。
RAND(seed) 固定種子產生確定序列,用於測試/分頁復現UUID()、RANDOM_BYTES() (8.0+)FLOOR(-2.3) = -3 (向負無窮)
CEIL(-2.3) = -2 (向正無窮)
-- 非截斷整數部分(-2)!
-- 伯努利抽樣 ~10%
SELECT * FROM large_table WHERE RAND() < 0.1;
-- 系統抽樣(配合主鍵)
SELECT * FROM large_table WHERE id % 100 < 10; -- 精確10%
-- 用戶ID作種子,同用戶分頁順序固定
SELECT * FROM articles ORDER BY RAND(user_id) LIMIT 20 OFFSET 0;
SELECT POW(1 + rate/100, years) AS multiplier FROM financial_products;
數學函數是報表計算、科學分析、隨機化業務、金融建模的基礎組件,精通精度特性、邊界行為、組合模式,避免「看起來對實際錯」的生產事故。