oracle SQL Developer 显示数字数据类型为空,而 Length 函数显示 ORA-01722:无效数字

Posted

技术标签:

【中文标题】oracle SQL Developer 显示数字数据类型为空,而 Length 函数显示 ORA-01722:无效数字【英文标题】:oracle SQL Developer shows null for number data type while Length function says ORA-01722: invalid number 【发布时间】:2018-07-19 20:04:26 【问题描述】:

给定一个具有单个数字数据类型列的表,并且 SQL 开发人员正在(可能不正确地)显示空值,尝试通过执行以下 SQL 来查明问题:

select length(myNumberColumn) from myTable

返回

ORA-01722: 无效号码

Trim() 也会抛出同样的错误。看起来有些数据可能是坏的,但我的表有几千行,如何识别坏记录?严重的是 SQL Developer,它是 null 还是无效数字?有没有办法让 SQL Developer 显示实际值而不是 null?

【问题讨论】:

我不明白length() 是如何返回该错误的。 听起来可能是corrupt。 dump() 显示该值是什么? 有趣,之前没见过dump()。坏记录回来了: Typ=2 Len=8: 255,248,0,0,0,0,0,0 在使用 IBM/AIX RISC System/6000 前几天我遇到了一个类似的问题(由 Alex Poole 发布):版本 12.1.0.2.0 你使用什么版本? 【参考方案1】:

找到了!有问题的值确实在 SQL Developer 中显示为 (null),但是将数据导出到 csv 并在 Excel 中查看显示了记录的实际值,并且非常大.... 1.10905886754731E+130(基本上是无穷大)。理想情况下,SQL 开发人员不会为这些类型的记录显示 (null)。

【讨论】:

导出到 CSV 和导入到 Excel 都可能改变值。 dump(myNumberColumn) 会更可靠。 您向 SQL Developer 提出了不可能的问题。该值一开始就无效。 应该 SQL Developer 如何显示这些值?理想情况下,Oracle 数据库不应允许存储无效值。确实如此——存储无效值的方法有很多种,问题出在数据库产品上,而不是前端(SQL Developer)。 According to this,SQL Navigator(不是我用过的客户端!)显示“错误”。认为 SQL Developer 可以显示 (ERROR)(INVALID) 或类似内容似乎并非不合理。一个给杰夫...

以上是关于oracle SQL Developer 显示数字数据类型为空,而 Length 函数显示 ORA-01722:无效数字的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE SQL Developer日期显示格式不全

如何让 Oracle SQL Developer 显示应用程序图标?

向 SQL Developer 添加新连接时不显示 Oracle TNS 名称

如何设置让Oracle SQL Developer显示的时间包含时分秒

Oracle SQL Developer - 看不到表

Oracle SQL Developer调试Oracle存储过程