SQL实现整数向上取整至最近高位整十数的方法咨询
向上取整至最近高位整十数的SQL解决方法
嘿,我懂你的困扰——ROUND()函数确实解决不了这个问题,因为它是四舍五入逻辑,而你要的是无条件向上取整到下一个整十数。比如ROUND(63,-1)会返回60,这显然不是你想要的结果。
这里给你一个通用的解决方案,利用CEILING()函数(部分数据库也叫CEIL(),功能完全一致):
核心公式是:
CEILING(你的数值 / 10) * 10
实际例子演示:
- 处理63:
63 / 10 = 6.3,CEILING(6.3)返回7,7 * 10 = 70 - 处理71:
71 / 10 = 7.1,CEILING(7.1)返回8,8 * 10 = 80 - 处理整十数80:
80 /10 =8,CEILING(8)返回8,8*10=80(符合预期,不会多进一位)
不同数据库的小细节提醒:
有些数据库(比如SQL Server、老版本MySQL)会把整数之间的除法截断为整数,比如63/10会得到6而不是6.3,这时候需要把其中一个操作数转为小数,确保除法结果是浮点数:
-- SQL Server 兼容写法 SELECT CEILING(CAST(63 AS FLOAT)/10)*10 AS rounded_up; -- MySQL 兼容新旧版本写法 SELECT CEILING(63 / 10.0)*10 AS rounded_up;
这样就能完美实现你要的“向上取整到最近高位整十数”的需求啦!
内容的提问来源于stack exchange,提问作者Hadrian
相关产品推荐
相关产品推荐

