MySQL支持数值计算,可在SQL子句中直接进行四则运算、取模(%)、整除(DIV)及数学函数操作;注意NULL参与运算结果为NULL、除法默认浮点、索引优化需避免字段函数运算。

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)
