今天一个开发人员说一个很普通的sql语句提示ORA-01722:invalid number,该sql语句为
select to_number(paraid,'xxxxxxxxxx') paraid,sortid,dataid from scpparsereg;一个很简单的sql语句,开发人员说使用pl/sql显示全部记录时到第1000条时报这个错误,那证明前999条记录显示是正常的,整个sql语句就一个简单得不能再简单的sql语句,其中能出问题的就是使用了一个转换函数to_number,于是使用desc scpparsereg中显示表结构,发现paraid是个char(8)的数据类型,怀疑可能是字符不够自动补空格,然后在此情况下进行转换时报错,接着通过select distinct length(trim(paraid)) from scpparsereg该sql语句得到了答案:
1* select distinct lengthb(trim(parseid)) from scpparsereg
idle> /
LENGTHB(TRIM(PARSEID))
----------------------
8
7
从以上结果就可以断定是由于空格转换成数字时发生该错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-696431/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20801486/viewspace-696431/