ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个sql查询语句报ORA-01722

一个sql查询语句报ORA-01722

原创 Linux操作系统 作者:wxjzqym 时间:2011-05-27 15:57:06 0 删除 编辑

    今天一个开发人员说一个很普通的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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-15

  • 博文量
    100
  • 访问量
    474364