LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server取整函数完全指南:ROUND、CEILING、FLOOR怎么用?

admin
2026年4月19日 9:48 本文热度 48

数值取整别再傻傻分不清,一篇文章帮你彻底搞懂

大家好。今天来聊聊SQL Server中的取整函数——ROUND、CEILING、FLOOR。它们在数据统计、金额计算、分页等场景中经常用到,搞清楚了能避免很多坑。

一、整数除法陷阱(最常踩的坑)

-- 两个整数相除,结果会自动截断小数部分SELECT 3/4 AS 结果14/3 AS 结果25/3 AS 结果3-- 结果:0, 1, 1


原因:整数除法返回整数,直接舍弃小数(不是四舍五入)。

解决方案:先转换为小数再除

SELECT 3*1.0/4   -- 0.750000SELECT CAST(3 AS DECIMAL(10,2))/4  -- 0.750000


二、三个核心取整函数

函数
功能
示例
结果
CEILING
向上取整(天花板)
CEILING(123.45)
124
FLOOR
向下取整(地板)
FLOOR(123.45)
123
ROUND
四舍五入到指定位数
ROUND(123.45, 1)
123.50

三、CEILING:向上取整

返回大于或等于指定数字的最小整数。

SELECT     CEILING(123.55AS 正数,    CEILING(123.45AS 正数2,    CEILING(-123.45AS 负数,    CEILING(0.0AS 零-- 结果:124, 124, -123, 0


参数说明

  • 正数b:保留几位小数

  • 负数b:精确到小数点左边几位

四舍五入并转为整数

SELECT     CAST(ROUND(56.3610) AS INT) AS 结果1,  -- 56    CAST(ROUND(56.5610) AS INT) AS 结果2   -- 57


五、实际应用场景

场景1:分页计算(向上取整)

-- 计算总页数:总记录数100,每页30条,需要多少页?DECLARE @total INT = 100@pageSize INT = 30SELECT CEILING(@total * 1.0 / @pageSizeAS 总页数-- 结果:4页


场景2:金额四舍五入到分

-- 计算折扣后金额,保留2位小数DECLARE @price DECIMAL(10,4= 99.99@discount DECIMAL(3,2= 0.7SELECT ROUND(@price * @discount2AS 折后金额-- 结果:69.99


场景3:整数除法(向上取整 vs 四舍五入)

DECLARE @dividend DECIMAL(20,2), @divisor DECIMAL(20,2)-- 向上取整SET @dividend=3SET @divisor=4SELECT CEILING(@dividend/@divisorAS 向上取整  -- 1SET @dividend=4SET @divisor=3SELECT CEILING(@dividend/@divisorAS 向上取整  -- 2SET @dividend=5SET @divisor=3SELECT CEILING(@dividend/@divisorAS 向上取整  -- 2-- 四舍五入取整SET @dividend=3SET @divisor=4SELECT CAST(ROUND(@dividend/@divisor0AS INTAS 四舍五入  -- 1SET @dividend=4SET @divisor=3SELECT CAST(ROUND(@dividend/@divisor0AS INTAS 四舍五入  -- 1SET @dividend=5SET @divisor=3SELECT CAST(ROUND(@dividend/@divisor0AS INTAS 四舍五入  -- 2

关键区别

  • CEILING:总是向上,4/3 = 1.33 → 2

  • ROUND:四舍五入,4/3 = 1.33 → 1

六、其他相关函数

-- FLOOR:向下取整SELECT FLOOR(123.99)   -- 123SELECT FLOOR(-123.45)  -- -124-- 直接截断小数(不四舍五入)SELECT CAST(123.99 AS INT)   -- 123-- 绝对值SELECT ABS(-123.45)   -- 123.45

七、快速对照表

输入值
CEILING
FLOOR
ROUND(,0)
CAST(AS INT)
3.2
4
3
3
3
3.6
4
3
4
3
-3.2
-3
-4
-3
-3
-3.6
-3
-4
-4
-3
3/4
1
0
1
0

八、常见问题

Q:为什么3/4等于0?
 A:整数除法截断小数,改成3*1.0/4CAST(3 AS DECIMAL)/4

Q:CEILING和ROUND有什么区别?
 A:CEILING(1.1)=2(直接向上),ROUND(1.1,0)=1(四舍五入)。

Q:如何保留两位小数但不四舍五入?
 A:用FLOOR(数值 * 100) / 100

九、总结

需求
推荐函数
整数除法不丢精度
先转DECIMAL再除
计算总页数
CEILING(总数*1.0/页大小)
金额四舍五入
ROUND(金额, 2)
向下取整
FLOOR(数值)
去掉小数(直接截断)
CAST(数值 AS INT)

一句话:向上取整用CEILING,四舍五入用ROUND,整数除法记得转小数!


阅读原文:原文链接


该文章在 2026/4/20 13:01:20 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号