关于ORA-01722:invalid number(无效数字)的个人解决思路

43 阅读1分钟

关于ORA-01722:invalid number(无效数字)的个人解决思路

select 一个源表然后 left join 另一个子表 on 源表的一个字符串类型的字段 = 子表的number字段 这时一旦我的源表的字符串字段出现不是数字的字符,就会报错

排查流程:

在子查询较多的情况下,先排查是不是where后的字符串字段的值未加双引号,若不是则把主查询运行试一下,可以就继续排查join关联的子表字段,首先重点排查匹配number类型的字段 可以使用正常表达式把除数字以外的字符匹配出来 下面是我的排查代码 select taa_app_emp from t_jf_approve where taa_app_emp is not null and not regexp_like(taa_app_emp,'^\d+)配开头,\d相当于[09]用来匹配数字,+表示多个,') --这里^匹配开头,\d相当于[0-9]用来匹配数字,+表示多个,匹配结尾 这样就把含有除数字以外的不合法字符的数据给找出来,删除或替换成正常的数据则可正常查询