您的位置:首页 > 其它

用正则表达式定位引起ORA-01722: 无效数字的问题数据

2014-03-14 16:49 232 查看
   在执行SQL时,比如大批量数据转移时,经常会遇到无效数字的问题,如何快速定位到时那个字段那个值?这个问题的原因是varchar2转number出错,用正则表达式可以快速定位出问题数据,下面来做个例子:

SQL> drop table test purge;

SQL> create table test as select * from dba_objects;

SQL> update test set subobject_name=object_id;

SQL> update test set subobject_name='gg' where rownum<5;
SQL> commit;
SQL> select count(1) from test where subobject_name=object_id;

select count(1) from test where subobject_name=object_id

                                *

第 1 行出现错误:

ORA-01722: 无效数字

SQL> select subobject_name, object_id

  2    from test

  3   where not regexp_like(subobject_name, '[[:digit:]]');

SUBOBJECT_NAME                  OBJECT_ID

------------------------------ ----------

gg                                     20

gg                                     44

gg                                     28

gg                                     15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: