Oracle数据库查询请问:select * from A,B where A.CourseNum=B.billon;其中CourseNum为number类型,billion为varchar2类型,一直报错ORA-01722: 无效数字,谁帮忙改写一下? 

解决方案 »

  1.   

    B.billon有不是数字的内容,做强制转换时出错了。
      

  2.   

    类型不匹配,需要类型转换,函数:to_char()转换成字符,
    to_num()转换成数字
      

  3.   

    select * from A,B where to_char(A.CourseNum)=B.billon,顺便说一下,哥们,你这表设计的有问题啊。这应该是外键关系啊,怎么数据类型都不一样呢。
      

  4.   

    number和varchar2
    一个数字
    一个字符
      

  5.   

    这表设计的有问题吧,主外键关系字段类型都不一样,
    用to_char转换之后试试,或者编辑一个表,使其和另一个字段类型对应吧!
      

  6.   

    这个是类型转换问题:

    select * from A,B where A.CourseNum=B.billon;
    其中CourseNum为number类型,billion为varchar2类型。

    假如b.billion全部都是number就没有问题。select * from A,B where A.CourseNum=字符串,但是字符串能够转为数字的,就没有问题。select * from A,B where B.billon=数字,则如果B.billon存的都是可以转为数字的,则没问题。但是如果B.billon存的有一个是不可以转为数字的,则有报ORA-01722: 无效数字异常。
      

  7.   

    肯定报错,不报错才怪
    你要自己解决才好,教你一招 把ORA-01722放到google上去查询