导读:本期聚焦于小伙伴创作的《SQL中如何使用floor和ceil处理数值取整?floor和ceil的实用技巧有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL中如何使用floor和ceil处理数值取整?floor和ceil的实用技巧有哪些》有用,将其分享出去将是对创作者最好的鼓励。

在SQL的各类数据处理场景中,数值取整是高频需求,floor和ceil是两个专门用于数值取整的内置函数,二者处理逻辑不同,适配不同的业务场景,掌握它们的用法能大幅提升数据处理的效率。

SQL中如何使用floor和ceil处理数值取整?floor和ceil的实用技巧有哪些

floor和ceil函数的基础语法

floor函数的作用是向下取整,即返回小于等于输入数值的最大整数;ceil函数的作用是向上取整,即返回大于等于输入数值的最小整数。两个函数的语法非常简洁,参数均为一个数值类型的表达式,支持整数、小数、浮点型等常见数值类型。

以MySQL数据库为例,基础调用方式如下:

-- floor函数语法
FLOOR(数值表达式)
-- ceil函数语法
CEIL(数值表达式)
-- 也可以使用CEILING,是CEIL的同义词
CEILING(数值表达式)

基础用法示例

下面通过具体的数值案例展示两个函数的处理结果差异,测试数值包含正数、负数、整数三类:

SELECT 
    FLOOR(3.2) AS floor_positive,  -- 结果:3
    CEIL(3.2) AS ceil_positive,    -- 结果:4
    FLOOR(-3.2) AS floor_negative, -- 结果:-4
    CEIL(-3.2) AS ceil_negative,   -- 结果:-3
    FLOOR(5) AS floor_integer,     -- 结果:5
    CEIL(5) AS ceil_integer        -- 结果:5
FROM dual;

从结果可以看出,当输入为整数时,两个函数的返回值都等于原整数;正数的取整逻辑符合常规的上下取整认知,负数的取整需要注意,floor会取到更小的负整数,ceil会取到更大的负整数。

实际业务中的实用技巧

1. 分页场景计算总页数

在分页查询时,通常需要根据总数据量和每页条数计算总页数,此时就需要用到ceil函数。假设总数据量为total_count,每页展示page_size条数据,总页数公式为:

-- 计算总页数
SELECT CEIL(total_count / page_size) AS total_page
FROM (
    SELECT COUNT(*) AS total_count
    FROM user_table  -- 用户表,替换为实际业务表名
) t;

比如总数据量为101条,每页展示10条,101/10=10.1,ceil处理后得到11,符合总页数的实际计算结果。

2. 金额向下取整分摊场景

在金额分摊、优惠券抵扣等场景中,经常需要向下取整避免金额溢出,比如将100元优惠券平均分摊给3个订单,每个订单最多抵扣的金额需要用floor计算:

-- 计算每个订单最多抵扣的优惠券金额,单位:分
SELECT FLOOR(10000 / 3) AS per_order_deduct;  -- 10000分=100元,结果:3333,即33.33元

3. 时间维度取整统计

如果需要对时间戳按小时、天等维度做向下取整统计,比如统计每个整点小时的订单量,可以结合floor和时间函数使用:

-- 按小时向下取整统计订单量
SELECT 
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(order_time) / 3600) * 3600) AS hour_start,
    COUNT(*) AS order_count
FROM order_table  -- 订单表,替换为实际业务表名
GROUP BY hour_start;

注意事项

  • 不同数据库对这两个函数的支持基本一致,但部分数据库ceil函数的写法可能有差异,比如Oracle中支持CEIL和CEILING,SQL Server中仅支持CEILING。
  • 如果输入参数为NULL,两个函数的返回值均为NULL,使用时需要先做空值处理,避免统计结果异常。
  • 处理负数的取整时,要仔细核对业务需求,避免把floor和ceil的逻辑弄反,导致结果不符合预期。
需要注意的是,floor和ceil仅做取整处理,不会进行四舍五入,如果需要四舍五入取整,应该使用ROUND函数,三个函数的适用场景有明显区分,不要混淆使用。

SQLfloor函数ceil函数数值取整修改时间:2026-06-21 03:57:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。