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