MySQL支持直接在SQL中使用标准算术运算符(+、-、*、/、div、%或mod)进行数值计算,优先级遵循数学规则,可应用于SELECT生成计算列、WHERE过滤及ORDER BY排序,并需注意NULL处理、数据类型转换及溢出风险。

MySQL 中可以直接在 SQL 查询里进行数值计算,使用标准的算术运算符即可完成加减乘除、取模、负号等操作,无需额外函数(除非涉及复杂数学逻辑)。
基础算术运算符
MySQL 支持以下常用算术运算符,优先级与数学规则一致(先乘除模,后加减,括号可改变顺序):
-
+:加法,如
price + tax -
-:减法或负号,如
salary - deduction或-amount -
*:乘法,如
quantity * unit_price -
/:除法,结果为浮点数(即使操作数是整数),如
10 / 3得3.3333 -
div:整除(只保留商的整数部分),如
10 div 3得3 -
% 或 mod:取模(求余数),如
10 % 3或10 mod 3得1
在 SELECT 中动态计算字段
可在 SELECT 列表中直接写表达式,为结果生成计算列(别名推荐用 AS 明确命名):
示例:SELECT id, price, quantity, price * quantity AS total_cost FROM orders;
该语句返回每笔订单的总价,total_cost 是计算出的新列。
支持多层运算和函数嵌套,例如:SELECT ROUND(salary * 1.1, 2) AS new_salary FROM employees;
先乘以 1.1 涨薪,再四舍五入保留两位小数。
注意事项与常见问题
数值计算时需留意数据类型隐式转换和空值影响:
- 任意操作数为
NULL,整个表达式结果为NULL(如5 + NULL→NULL),必要时用IFNULL()或COALESCE()处理 - 整数除法
/仍返回浮点结果;若需整数商,用div更安全 - 模运算中,负数取模遵循 MySQL 规则:符号与被除数相同,如
-7 % 3=-1,7 % -3=1 - 大数计算注意溢出风险,尤其是
BIGINT范围(±9.2×10¹⁸),超出会报错或截断
在 WHERE 和 ORDER BY 中使用计算
算术表达式也可用于过滤或排序:
WHERE 示例:SELECT * FROM products WHERE price * discount_rate > 100;
筛选折扣后价格超 100 的商品。
ORDER BY 示例:SELECT name, score1, score2 FROM students ORDER BY (score1 + score2) DESC;
按总分降序排列学生记录。










