MySQL 提供豐富的數值函數支援,涵蓋基本算術運算、數學函數、三角函數、對數與指數運算等。掌握這些函數能讓資料處理更高效、精確。
mysql> SELECT 3+5;
-> 8
mysql> SELECT 3-5;
-> -2
mysql> SELECT -2;
-> -2
注意:對 -263 使用一元負號會溢位,建議避免對可能產生該值的整數使用。
mysql> SELECT 3*5;
-> 15
mysql> SELECT 18014398509481984*18014398509481984.0;
-> 324518553658426726783156020576256.0
mysql> SELECT 18014398509481984*18014398509481984;
-> 0 -- 整數溢位,超出 BIGINT 64 位元範圍
mysql> SELECT 3/5;
-> 0.60
mysql> SELECT 102/(1-1);
-> NULL -- 除以零回傳 NULL
mysql> SELECT 5 DIV 2;
-> 2 -- 類似 FLOOR(),但使用 BIGINT 演算法更可靠
| 函數 | 說明 | 範例 |
|---|---|---|
| ABS(X) | 絕對值 | ABS(-32) → 32 |
| CEILING(X) / CEIL(X) | 不小於 X 的最小整數 | CEILING(1.23) → 2 |
| FLOOR(X) | 不大於 X 的最大整數 | FLOOR(-1.23) → -2 |
| ROUND(X, D) | 四捨五入,保留 D 位小數 | ROUND(1.298, 1) → 1.3 |
| TRUNCATE(X, D) | 捨去至 D 位小數(不四捨五入) | TRUNCATE(1.999, 1) → 1.9 |
| MOD(N, M) / N % M | 取模運算 | MOD(234, 10) → 4 |
| POW(X, Y) / POWER(X, Y) | X 的 Y 次方 | POW(2, -2) → 0.25 |
| SQRT(X) | 平方根 | SQRT(20) → 4.472... |
| EXP(X) | e 的 X 次方 | EXP(2) → 7.389... |
| LN(X) / LOG(X) | 自然對數 | LN(2) → 0.693... |
| LOG(B, X) | 以 B 為底的對數 | LOG(2, 65536) → 16 |
| LOG2(X) | 以 2 為底的對數 | LOG2(65536) → 16 |
| LOG10(X) | 以 10 為底的對數 | LOG10(100) → 2 |
| SIGN(X) | 符號:-1、0、1 | SIGN(-32) → -1 |
| PI() | 圓周率 | PI() → 3.141593 |
| RAND() / RAND(N) | 隨機浮點數 0~1,N 為種子 | RAND(20) → 固定序列 |
參數單位為弧度。常用函數: