首页/数据/SQL 速查/TRUNCATE 截断小数(注意与清表语句同名)
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

TRUNCATE 截断小数(注意与清表语句同名)

按位数直接截断、不做舍入:MySQL TRUNCATE(x,d)、PostgreSQL trunc(x,d);名字与 TRUNCATE TABLE 相同但不是一回事。

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

示例

示例
-- MySQL
SELECT TRUNCATE(2.999, 2);      -- 2.99(不是 3.00)
SELECT TRUNCATE(1234.5678, -2);  -- 1200
-- PostgreSQL
SELECT trunc(2.999, 2);          -- 2.99
SELECT trunc(1234.5678, -2);     -- 1200
与 ROUND 区别只截断不舍入:2.999 保留 2 位为 2.99
负位数向整数位方向截断(-2 截到百位)
陷阱搜索引擎里 TRUNCATE 大量结果是清表语法,别抄错

易错点

  • 本意是截断小数却写成了 TRUNCATE TABLE xxx,在生产上直接清空表(高危操作,务必确认语句)
  • TRUNCATE(x,d) 的 d 传负数在 MySQL 会向整数位截断,与 ROUND 负位数规则一致但容易忘

数据来源与参考

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