MySQL 中可以直接在 SQL 查询里进行数值计算,使用标准的算术运算符即可完成加减乘除、取模、负号等操作,无需额外函数(除非涉及复杂数学逻辑)。
基础算术运算符
MySQL 支持以下常用算术运算符,优先级与数学规则一致(先乘除模,后加减,括号可改变顺序):
+:加法,如price + tax-:减法或负号,如
salary - deduction或
-amount*:乘法,如
quantity * unit_price/:除法,结果为浮点数(即使操作数是整数),如
10 / 3得
3.3333div:整除(只保留商的整数部分),如
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;
按总分降序排列学生记录。
