wxjzqym 发表于 2011-2-18 15:17:13

请教一个诡异的问题(同样的sql无法在不同的库运行)

我公司有个rac的测试环境,然后我笔记本上有个学习的单机oracle库,他们两个都是11.2.0.2版本的
有个测试表ipmap(symtid char(10) primary key,port int );(表结构在两个库一摸一样)
SQL> select * from ipmap;
SYMTID         PORT
---------- ----------
w1               38
w2               38
w3               38
w4               38

问题如下:
我在学习库上运行如下sql成功
SQL> select * from ipmap where substr(symtid,2)=1;
SYMTID         PORT
---------- ----------
w1               38
接着我用同样的sql语句在rac的测试库上运行却失败
SQL> select * from ipmap where substr(symtid,2)=1;
ERROR:
ORA-01722: invalid number
no rows selected
由于数据类型不匹配(虽然我在学习库上能够执行成功),于是接着运行如下sql
SQL> select * from ipmap where to_number(substr(symtid,2))=1;
ERROR:
ORA-01722: invalid number

no rows selected

因为公司要对ipmap表进行批量更新的测试,而主键列为字符型,所以我想到了用substr截取字符剩下的就是有规律的数字了,那样就可以结合for循环中的批量来进行批量更新了。可上面的问题我却不知道如何是好 特请教各位

oraunix 发表于 2011-2-19 22:39:03

应该是有非法数据。
页: [1]
查看完整版本: 请教一个诡异的问题(同样的sql无法在不同的库运行)