用正则表达式定位引起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
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
相关文章推荐
- SQL查出异常数据(ORA-01722: 无效数字)
- Oracle 参数化更新数据时报错:Oracle ORA-01722: 无效数字
- C++用正则表达式,以及十六进制字符串转十进制数字的问题。
- 【android学习】通过正则表达式解决数据传输过程中的堆包问题
- 关于脏字典过滤问题-用正则表达式来过滤脏数据
- ORA-01722:无效数字
- oracle insert数据标识符无效问题 oracle ORA-00904: "字段名": 标识符无效
- ORA-01722: 无效数字的解决方法
- 如何处理在使用正则表达式抓取数据是栈溢出问题
- 关于脏字典过滤问题-用正则表达式来过滤脏数据
- 只能输入数字的正则表达式在火狐的兼容问题解决方法
- ORA-01722: 无效数字
- oracle to_namber之后报ora-01722:无效数字
- ORACLE-023:令人烦恼的 ora-01722 无效数字
- Oracle ADF 异常:Caused By: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
- java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
- PreparedStatementCallback; SQL [insert into person values(?,?,?)]; ORA-01722: 无效数字
- oracle 无效数字ORA-01722:
- Oracle关于统计每天数据的总和时出现无效数字问题
- ora-01722 无效数字