FLOOR返回向下取整(朝负无穷),CEIL返回向上取整(朝正无穷);例如FLOOR(2.9)=2、FLOOR(-2.1)=-3,CEIL(2.1)=3、CEIL(-2.9)=-2,二者均非四舍五入,且在所有主流SQL方言中行为一致。FLOOR 和 CEIL 到底返回什么,别被“四舍五入”带偏它们根本不做四舍五入:FLOOR 永远向下取整(朝负无穷),CEIL 永远向上取整(朝正无穷)。比如 FLOOR(2.9) 是 2,FLOOR(-2.1) 是 -3;CEIL(2.1) 是 3,CEIL(-2.9) 是 -2。很多初学者误以为 CEIL 是“进一”,结果在负数上栽跟头。正数场景下,FLOOR 相当于截断小数部分,CEIL 是“有小数就加1”负数才是关键分水岭:-2.1 的“向下”是 -3,不是 -2;数据库不会按人脑直觉判断方向所有主流 SQL 方言(PostgreSQL、MySQL、SQL Server、Oracle)行为一致,无需担心兼容性差异什么时候该用 FLOOR 而不是 CAST 或 ROUND当你需要确定的、方向明确的整数边界时,FLOOR 比 ROUND 更可靠,比 CAST(x AS INTEGER) 更安全。例如计算分页起始行号:OFFSET FLOOR((page_no - 1) * page_size) —— 这里不能用 ROUND,否则第 0.9 页可能跳到第 1 页起点;也不能直接 CAST,因为某些方言(如 PostgreSQL)对负数的 CAST 是向零截断,和 FLOOR 不等价。ROUND(2.5) 可能是 2 或 3(取决于实现),FLOOR(2.5) 永远是 2CAST(-2.7 AS INTEGER) 在 PostgreSQL 返回 -2,在 SQL Server 返回 -2,但语义不清晰;FLOOR(-2.7) 明确是 -3性能上无差别,三者都是标量函数,执行计划里都显示为 Compute ScalarCEIL 的典型用途:资源配额与分组计数CEIL 最常出现在“不够一单位也要算一单位”的业务逻辑里,比如按 100 条/批次切分任务,150 条要分 2 批,而不是 1 批——这时 CEIL(total_count / 100.0) 就比 (total_count + 99) / 100 更易读且跨方言安全。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐