You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中CONNECT BY LEVEL查询小数匹配无返回结果问题咨询

问题根本原因
  • 你通过CONNECT BY LEVEL生成的序列n全部为整数:LEVEL是Oracle内置伪列,返回值为正整数,经过TO_NUMBER(LEVEL) - 1计算后得到的是0到999的连续整数,无小数位。
  • 当HOURS字段求和结果为整数时,可与序列中的整数值匹配,查询正常返回;当求和结果包含小数时,整数序列不存在对应值,无法匹配,因此无结果返回。
解决方案

要匹配带小数的求和结果,只需将生成的序列精度提升到和业务数据的小数位一致即可。你当前的HOURS字段保留两位小数,可将序列生成逻辑调整为步长0.01的连续值,修改后的查询如下:

SELECT n.n
FROM 
    (SELECT (LEVEL - 1)/100 n FROM DUAL CONNECT BY LEVEL <= 1000 * 100 ) n
WHERE n.n = 
    (subquery)

如果后续业务数据小数位有调整,可对应修改分母和LEVEL上限:比如需要支持三位小数,就将分母改为1000,LEVEL上限改为1000 * 1000即可。

另外你提供的测试INSERT语句存在语法错误,多个插入值之间缺少逗号分隔,修正后可直接执行:

INSERT INTO RESULT_VALUES(Result_ID, Assignment_ID, Date_Earned, Hours) VALUES
(50,123456,to_date('01/02/2020', 'DD/MM/YYYY'),3.68),
(51,230034,to_date('02/02/2020', 'DD/MM/YYYY'),5),
(52,123456,to_date('03/02/2020', 'DD/MM/YYYY'),10),
(53,123456,to_date('04/02/2020', 'DD/MM/YYYY'),5),
(60,123456,to_date('05/02/2020', 'DD/MM/YYYY'),5),
(90,123456,to_date('06/02/2020', 'DD/MM/YYYY'),5),
(2384,123456,to_date('07/02/2020', 'DD/MM/YYYY'),10);

内容的提问来源于stack exchange,提问作者user1660680

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:18:03