日期:2014-05-17  浏览次数:20877 次

ORA-01722: 无效数字
我这有个表A,以前可以这样查询:select * from A where m_no=1234
m_no的类型和精度VARCHAR2(20 BYTE),不是主键。
怎么现在只能select * from A where m_no='1234'这样查询了呢?必须加上单引号,否则报“ORA-01722: 无效数字”。突然就这样了。我试了,找了数据库里其他的表,几百万数据量(比该表大),该字段也不是主键,是可以不加引号查询的。又找了一个类似表,并且该字段是主键,不加引号也没问题呀。
上面都是用授权的账号在表前加用户名查询的,后来我把数据库导到我本机,用拥有者的帐号查询,还是一样的问题。
数据库 ora 无效数字

------解决方案--------------------
你的表里面这个字段有非数字的值了,所以oracle自动转换失败!!!

create table tab_test
(
  aa    varchar2(20)
);

insert into tab_test values('1234');
insert into tab_test values('2345');
insert into tab_test values('3456');
commit;

select * from tab_test where aa = 1234;

insert into tab_test values('abcd');

select * from tab_test where aa = 1234;

drop table   tab_test;

------解决方案--------------------
引用:
你的表里面这个字段有非数字的值了,所以oracle自动转换失败!!!

create table tab_test
(
  aa    varchar2(20)
);

insert into tab_test values('1234');
insert into tab_test values('2345');
insert into tab_test values('3456');
commit;

select * from tab_test where aa = 1234;

insert into tab_test values('abcd');

select * from tab_test where aa = 1234;

drop table   tab_test;


+1