You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中使用FLOOR函数取整时如何去除结果小数位末尾的0

问题原因

返回结果带.0的核心原因是:你整个计算过程的数值类型都是DECIMAL(精确小数类型),FLOOR()函数处理DECIMAL运算后返回值依然是DECIMAL类型,这类类型会固定保留对应的小数位占位,哪怕小数部分实际为0,也会展示出.0后缀。
另外你贴的示例语句末尾多写了一个右括号,实际执行会报语法错误,改写时可以一并修正。

解决方法

直接把FLOOR()计算完成的结果显式转换成整数类型即可——整数类型不会存储小数位,返回的结果自然就是纯整数格式,不会带末尾的.0。
通用写法(适配绝大多数主流数据库):

CAST(FLOOR(CAST(amount AS DECIMAL(16))/rate/100) AS INT)

针对不同数据库,你也可以选择对应适配的写法:

  • MySQL/MariaDB:可以用SIGNED(有符号整数)、UNSIGNED(无符号整数)代替INT,示例:
    CAST(FLOOR(CAST(amount AS DECIMAL(16))/rate/100) AS SIGNED)
    
  • PostgreSQL、SQL Server、Oracle 12c及以上版本:直接用上面的通用AS INT写法即可正常生效
  • 低版本Oracle:可以通过TO_NUMBER指定格式返回整数,示例:
    TO_NUMBER(FLOOR(CAST(amount AS DECIMAL(16))/rate/100), '9999999999')
    

如果你只是需要在展示层去掉.0,不需要拿结果做后续数值计算,也可以直接把结果转成字符串类型,但这种方式不推荐用于需要后续数值运算的场景,避免隐式类型转换带来的异常。

内容的提问来源于stack exchange,提问作者user16462786

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:57:11