请教一个诡异的问题(同样的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循环中的批量来进行批量更新了。可上面的问题我却不知道如何是好 特请教各位
标签: 暂无标签
wxjzqym

写了 7 篇文章,拥有财富 162,被 11 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P6 | 发表于 2011-2-19 22:39:03
应该是有非法数据。
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈