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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:35:571840browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn