在ORACLE 9I
版本上对一张数据量比较大的表进行SELECT操作时候报'invalid number'的错误.问题是把非正常数字型的字符串转化为数字型存储.
但是,这个问题不好定位到具体是什么数据有问题.
请教各位,如何快速准确定位到有问题的数据,便于修复.

解决方案 »

  1.   

    用pl/sql developer吧.装完后,把sql放上去,执行一下.一般的错误会给你定位到某一行的.
    如果找到哪一行就好办了.直接一个sql弄出那些不是数字的就哦了.就能看出哪些数据不对了.
      

  2.   

    DIN   DIN    DIN   DIN
      

  3.   

    --测试数据
    create table test2(cid varchar2(100));
    insert into test2 select '21' from dual union all select 'a' from dual;--自定义函数
    create or replace function IS_NUMBER(v in varchar2) return number
    is
    a number;BEGIN
    a := to_number(v);
      return a;
      Exception
       when others then
       return 0;
    END IS_NUMBER;
    --执行查询
    select cid from test2 where is_number(cid)=0
    --查询结果
    a