通用規則
- 所有數學函數於錯誤/無定義時返回
NULL。
- 整數運算溢位行為視版本而異,
BIGINT 範圍外謹慎使用一元負號。
函數分類速查表
基本算術與符號
| 函數 | 說明 | 範例 |
-X | 一元負號,改變符號 | SELECT -2; → -2 |
ABS(X) | 絕對值 | ABS(-32) → 32 |
SIGN(X) | 符號:-1/0/1 | SIGN(-5) → -1 |
MOD(N,M) / N % M | 模(餘數) | 234 % 10 → 4 |
捨入與截斷
| 函數 | 說明 | 範例 |
FLOOR(X) | ≤X 最大整數 | FLOOR(-1.23) → -2 |
CEILING(X) | ≥X 最小整數 | CEILING(-1.23) → -1 |
ROUND(X) | 四捨五入至整數 | ROUND(1.58) → 2 |
ROUND(X,D) | 四捨五入至 D 位小數 | ROUND(1.298,1) → 1.3 |
TRUNCATE(X,D) | 截斷至 D 位小數(不四捨五入) | TRUNCATE(1.999,1) → 1.9 |
注意:FLOOR/CEILING/ROUND 回傳值會轉為 BIGINT,極大值可能溢位。
指數與對數
| 函數 | 說明 | 範例 |
EXP(X) | e 的 X 次方 | EXP(2) → 7.389 |
LOG(X) | 自然對數 (ln) | LOG(2) → 0.693 |
LOG10(X) | 以 10 為底對數 | LOG10(100) → 2 |
POW(X,Y) / POWER(X,Y) | X 的 Y 次方 | POW(2,-2) → 0.25 |
SQRT(X) | 平方根 (X≥0) | SQRT(20) → 4.472 |
任意底對數公式:LOG(X)/LOG(B)。
三角函數(弧度制)
| 函數 | 說明 | 範例 |
PI() | 圓周率 | 3.141593 |
SIN(X) | 正弦 | SIN(PI()) → 0 |
COS(X) | 餘弦 | COS(PI()) → -1 |
TAN(X) | 正切 | TAN(PI()+1) → 1.557 |
ASIN(X) | 反正弦 (-1≤X≤1) | ASIN(0.2) → 0.201 |
ACOS(X) | 反餘弦 (-1≤X≤1) | ACOS(0) → 1.571 |
ATAN(X) | 反正切 | ATAN(2) → 1.107 |
ATAN2(Y,X) | 兩參數反正切,定象限 | ATAN2(-2,2) → -0.785 |
COT(X) | 餘切 | COT(12) → -1.573 |
角度弧度轉換
| 函數 | 說明 | 範例 |
DEGREES(X) | 弧度 → 角度 | DEGREES(PI()) → 180 |
RADIANS(X) | 角度 → 弧度 | RADIANS(90) → 1.571 |
隨機數
| 函數 | 說明 |
RAND() | 0~1 隨機浮點數 |
RAND(N) | 種子 N,固定序列 |
SELECT * FROM t ORDER BY RAND() 可隨機抽樣(3.23+)。
極值比較
| 函數 | 說明 | 比較規則 |
LEAST(X,Y,...) | 最小值 | 整數語境→整數比較;實數→實數;含區分大小寫字串→二進制比較;否則不區分大小寫 |
GREATEST(X,Y,...) | 最大值 | 同 LEAST |
3.22.5 前可用 MIN()/MAX() 替代(僅限聚合語境)。
常見陷阱提醒
LOG(-1)、ASIN(2)、COT(0) 等未定義輸入 → NULL,不報錯,應用層需自行判斷。
ROUND/FLOOR/CEILING 回傳 BIGINT,極大值可能溢位截斷。
RAND() 在 ORDER BY 中會重複計算,3.23 前不可用於排序。