首页/数据/SQL 速查/整数除法与除法精度
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

整数除法与除法精度

除法结果类型是跨库高频差异点:MySQL 的 / 得小数、DIV 取整数;PostgreSQL 整数相除直接截断,需要显式转 numeric。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT 5 / 2;      -- 2.5000(decimal)
SELECT 5 DIV 2;    -- 2(整数除法)
SELECT 5 % 2;      -- 1(取余)

PostgreSQL

PostgreSQL
SELECT 5 / 2;               -- 2(整数除法截断)
SELECT 5.0 / 2;             -- 2.5000000000000000
SELECT div(5, 2);           -- 2
SELECT (5::numeric / 2);    -- 2.5
MySQL/ 返回 decimal;DIV 返回整数
PostgreSQLint / int 截断为 int;div() 等价取整;要小数量级先转 numeric
百分比先乘 100 再除,或全程 numeric 避免中途截断

易错点

  • PostgreSQL 里 (a / b) * 100 的整数除法先截断再乘,得数与 MySQL 差一大截;先转 numeric 或调换顺序
  • MySQL 的 DIV 与 / 相邻使用易看错,代码评审时留意运算符两侧类型

数据来源与参考

  • MySQL 8.0 Reference Manual · Arithmetic Operators
  • PostgreSQL Documentation · Mathematical Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌