oracle怎么定位无效数字,oracle 如何快速定位到 ORACLE“ORA-01722:无效数字”的错误字段的两种方法...

这个方法只适合插入数据的时候无法插入的情况. 并且仅适用来排除错误, 生产运行的代码可不能这么写哦.

由于字段太多又无法快速定位到是哪个字段出错了. 要人工查出来的话实在是一个非常要命的事情.

第一种方法需要使用sql语句拼写的方式来逐个排错.

所以如果是用的Hibernate或者EF的小伙伴要用第二种方法了.

废话不多说,直接上代码图.

66f90303c9c1d6bf6d2a81673017e142.png

特点就是逐个字段进行update, 等程序运行到错误的数据的时候,就能知道是哪个字段出问题了…

当然有的小伙伴会觉得写SQL语句,很麻烦.其实只要有强大的工具, 能很快把Insert语句变成update这种形式的语句.

步骤如下.

第一步,把insert sql语句黏贴到 navicat 中, 整理成可以运行的sql语句. 然点击SQL美化. 这样SQL语句就变成两个竖排了.

第二步,分别把insert(字段部分)values(数值部分), 字段和数值部分,复制到Excle中,两列并排放,

第三步,中间插入一排空列,全部填=号, 后面一列填 “,” 逗号 然后复制过来.到Sublime Text中.稍微处理下就可以变换成我这种写法了. 前后大概2分钟. 如果是猜的话,大概要10分钟以上.

如果是牛人,建议自己写个小工具. 专门用来转换和诊断这种问题.

另外也可以把工具直接嵌入到系统中, try catch的时候直接转储问题数据,到时候好诊断…不过要try catch的就太多了.

第二种方法 适合EF和Hibernate 这种没有sql语句的框架. 原理也很简单. 利用反射逐个把字段值换成 0, 然后尝试插入, 直到能够插入成功的时候, 把字段名字显示出来.

如果是有两个字段导致这种问题的,此方法就不好使了.幸好一般都是一个字段不对导致的.

第三种最好的方法是,写个排错小工具,每次出错了,都通过反射导出数据成xml, 然后这个排错小工具根据xml的内容, 尝试进行插入和更新,然后发现有问题的字段…

这个工具想要的可以下面留言. 要的人多了, 我尝试着做一个...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值