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

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

WBOY
WBOYOriginal
2016-06-07 17:35:571774Durchsuche

在执行SQL时,比如大批量数据转移时,经常会遇到无效数字的问题,如何快速定位到时那个字段那个值?这个问题的原因是varchar2转n

在执行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 rownumSQL> 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

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn