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

Oracle ORA-01428参数超出范围报错 如何定位含非法值的id

ORA-01428报错原因

LN()函数仅支持输入大于0的数值,当传入参数为负数、0、或无法转换为合法数值的非数字字符串时,就会触发参数越界错误,这是当前报错的根本原因。

定位含非法值的id的方法

分两步执行查询即可:

  • 若Bmval是字符串类型,先排查无法转换为合法数值的记录:
SELECT DISTINCT id, Bmval
FROM Tab_A
WHERE REGEXP_LIKE(Bmval, '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$') = 0;
  • 再排查数值<=0的异常记录(数值类型的Bmval可直接执行该查询):
SELECT DISTINCT id, Bmval, pricedate
FROM Tab_A
WHERE CAST(Bmval AS NUMBER) <= 0;
临时修复建议

如果需要先绕过报错跑出结果,可以在计算时对非法值做兼容处理,例如将非法值默认替换为1(不影响乘积结果):

CAST(
  EXP(
    SUM(
      LN(
        CAST(
          CASE WHEN CAST(Bmret.Bmval AS NUMBER) > 0 THEN Bmret.Bmval ELSE 1 END
        AS NUMBER)
      )
    ) OVER (PARTITION BY bmret.id)
  )
AS NUMBER) AS Twr

内容的提问来源于stack exchange,提问作者Cecilie S. K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:36:04