关于 ORA-01722:无效数字 的情况及处理方式

tseng_monkey 2017-02-23 10:46:50


遇到这种情况是很头疼的;

首先是知道数据格式不匹配导致的,但是缺少解决问题的经验,只是干瞪眼,不知道怎么找错误的数据,网上查了下,各种花样,还有用什么rownum去锁定区域的。。。(<--------这个方法我也是傻乎乎的就用了,后来反应过来,如果数据都有问题了,你怎么能查出来呢,所以希望看到本帖的哥们姐们不要再去那样试了,浪费时间。)

于是乎怎么办呢,我只能去找同事帮我了,同事一下就给我找出来了问题。。。(感觉自己太菜了。。)
如下图:分析下错误的原因吧--
1)首先报错无效数字的话,确定了是字段格式不匹配,对于sql语句比我这个还复杂的,也是照样,讲语句分解开来
2)分解开后,去查询出数据,首先关注关联查询的字段,其次重点去关注number类型的,再去找varchar类型的(varchar类型的需要关注是否超出了长度)。---我这边出错的原因,是创建人CREATOR【varchar类型】是system,我们现有的代码是将创建人转换成对应中文名,对应的那个ES_USER的ID号是number类型的,不匹配所以报错了
3)查询出数据,定位到错误的数据,再看后期是改数据还是添加过滤或者改表了,

。。。。其实还是很简单的,记录下来怕自己以后忘记了;
另外废话一下:很感谢同事的帮助,IT的道路上要对遇到的问题保持乐观,只有遇到了这样的错,下次就知道怎么去解决,哈哈!加油加油加油!!!!


...全文
43602 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
OpenGao 2018-04-08
  • 打赏
  • 举报
回复 2
今天也遇到了,还有一种情况,to_char('20180408','yyyymmdd'),to_char里的数据类型本身就不是时间类型,总之,不能粗心大意,把自己笑哭了
止水i 2017-11-24
  • 打赏
  • 举报
回复
- -!! 我能执行的出来数据!!!! 但是一获取更多数据就会报错 无效数字
xiaoguanzhao 2017-02-23
  • 打赏
  • 举报
回复 3
楼主下次碰到这种问题,有个笨办法,可以借用二分查找法来定位,如10个字段,先注释后面5个字段,看是否报错,如不是,再注释前5个字段,排查后5个字段,以此类推,定位到某个字段,记住这个报错,下次再碰到的时候,一眼就可以定位,如定位不了,那就再看二眼
卖水果的net 2017-02-23
  • 打赏
  • 举报
回复
鼓励楼主一下,自己在博客中记录一下吧;
tseng_monkey 2017-02-23
  • 打赏
  • 举报
回复
引用 2 楼 xiaoguanzhao 的回复:
楼主下次碰到这种问题,有个笨办法,可以借用二分查找法来定位,如10个字段,先注释后面5个字段,看是否报错,如不是,再注释前5个字段,排查后5个字段,以此类推,定位到某个字段,记住这个报错,下次再碰到的时候,一眼就可以定位,如定位不了,那就再看二眼
恩!这个方法不错哦,SQL语句多的时候就用你这个方法,确实可以很快定位到错误
tseng_monkey 2017-02-23
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
鼓励楼主一下,自己在博客中记录一下吧;
谢谢你哦,其实我发在论坛里,第一是分享自己的方法,其次可能遇到有人提供更好的方法

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧