首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01722不同号码上的无效号码?

ORA-01722不同号码上的无效号码?
EN

Stack Overflow用户
提问于 2020-12-02 16:03:04
回答 1查看 100关注 0票数 0

我在查询中有一个条件:

代码语言:javascript
复制
ABS ( FIB.QUANT1 ) = ( OI.KLINE * :intv1000 ) / 1000.000000

当我使用intv1000 = 1000000运行查询时-查询运行正常。

当我使用intv1000 =1000时运行查询时,我得到ORA-01722 (大约5-6秒之后,不是立即)。

知道为什么吗?

QUANT1 - NUMBER(16,2) KLINE - NUMBER(38)

条件是从应用程序自己生成的,所以我不能真正更改它。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 21:12:07

ORA-01722是无效的数字错误。

当必须将非数字--通常是字符串--转换为数字时,会出现此错误。例如here

这种转换可以通过许多不同的方式进行,但最常见的有三种:

  • to_number()
  • cast()
  • implicit conversion

您突出显示的表达式可能与错误实际发生的位置有关,也可能与错误实际发生的位置无关。它所说的是:

  • 如果为:intv1000 = 1000000,则包含问题数据的行将被过滤掉。
  • 如果为intv1000 = 1000,则将处理包含问题数据的行。

啊哈。这是很难确定的。我建议首先查看查询并查找所有显式转换,看看它们是否存在问题。

如果找不到back数据,则需要查看所有比较(包括连接)、算术表达式和函数调用来查找问题。

一般来说,我强烈建议避免隐式转换。使用显式转换来避免这样的问题!注意:对于使用字符串函数和运算符转换为字符串,我做了一个例外。这些通常是非常安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65104243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档