MySQL 支持常见的数值计算,可直接在
SELECT、
WHERE、
ORDER BY等子句中对字段或常量进行加减乘除、取模、幂运算等操作,无需额外编程。
基础四则运算(+ - * /)
使用
+、
-、
*、
/对数字字段或字面量进行计算。注意除法结果默认为浮点数;若需整除,用
DIV关键字(如
10 DIV 3返回
3)。
SELECT price * 1.1 AS price_with_tax FROM products;—— 计算含税价
SELECT quantity - sold AS remaining FROM inventory;—— 计算剩余库存
SELECT id, (x + y) / 2 AS avg_coord FROM points;—— 计算平均坐标
取模与整除(% 和 DIV)
%返回两数相除的余数(支持负数,符号同被除数);
DIV是整数除法,向零截断,不返回小数。
SELECT id FROM users WHERE id % 2 = 0;—— 查询 ID 为偶数的用户
SELECT 7 % 3, -7 % 3, 7 DIV 3;→ 返回
1、
-1、
2避免用
/做整除判断(如
id / 2 = 3),因浮点精度可能导致误判
常用数学函数辅助计算
MySQL 内置函数可处理四舍五入、绝对值、幂、平方根等需求:
ROUND(x, d):四舍五入到小数点后 d 位(
d可为负,如
ROUND(1234, -2)→
1200)
ABS(x):返回绝对值;
POW(x, y)或
POWER(x, y):x 的 y 次方
SQRT(x):开平方(x ≥ 0);
MOD(x, y)等价于
x % y,语义更清晰
注意事项与常见陷阱
数值计算中容易忽略类型隐式转换和 NULL 行为:
任何含NULL的算术表达式结果均为
NULL(如
5 + NULL→
NULL),必要时用
IFNULL()或
COALESCE()处理 整数列参与除法(如
INT / INT)仍返回浮点结果;若要强制整数结果,显式用
DIV或
CAST(... AS SIGNED)避免在
WHERE中对字段做函数运算(如
WHERE price * 1.1 > 100),可能使索引失效;建议将计算移到右侧常量侧(如
price > 100 / 1.1)
