Oracle SQL中含小数值向上取整到下一个整数的实现方法
Oracle SQL 工作时长取数逻辑实现
实现方案
你描述的逻辑可以直接使用Oracle原生的CEIL函数实现,该函数的默认规则完全匹配需求:
- 输入值为整数时直接返回原值
- 输入值为非整数时,返回大于该值的最小整数(即向上取整到下一个整数)
具体查询语句
将你的实际表名替换下方的[你的数据表名]即可直接使用:
SELECT CEIL(working_hours / 15) AS target_result FROM [你的数据表名];
逻辑验证
你可以通过Oracle内置的DUAL表测试不同场景的返回结果,确认逻辑符合预期:
-- 场景1:working_hours/15结果为整数,返回原值(示例:60/15=4.0) SELECT CEIL(60/15) FROM DUAL; -- 返回结果:4 -- 场景2:working_hours/15结果大于4小于5,向上取整为5(示例:60.15/15=4.01) SELECT CEIL(60.15/15) FROM DUAL; -- 返回结果:5 -- 场景3:working_hours/15结果接近整数仍向上取整(示例:74.9/15≈4.99) SELECT CEIL(74.9/15) FROM DUAL; -- 返回结果:5 -- 场景4:working_hours/15结果为整数5,返回原值(示例:75/15=5.0) SELECT CEIL(75/15) FROM DUAL; -- 返回结果:5
特殊情况说明
如果你的working_hours字段为字符串存储类型,需要先转换为数值类型再计算:
SELECT CEIL(TO_NUMBER(working_hours) / 15) AS target_result FROM [你的数据表名];
内容的提问来源于stack exchange,提问作者Ricardo Jacobsen
相关产品推荐
相关产品推荐

