字段id为number类型
select * from table where id in ('1', '2')执行时,在控制台会出现异常invalid number。但在pl/sql里就正常能执行这是说明原因。。怎么解决

解决方案 »

  1.   

    select * from table where id in(1,2);
      

  2.   

    number类型的不能用IN吗?select * from table where id in(1,2)和select * from table where id in('1','2')一样吧??
      

  3.   

    number类型你怎么还用引号呢?
    加单引号就成字符型了 会报类型不一致的
    select * from table where id in(1,2);
      

  4.   

    number类型可以加也可以不加吧
      

  5.   

    恩,真的是这样的,但是我试了下没有问题啊
    SQL> select * from dept where deptno in ('60','20');    DEPTNO DNAME          LOC
    ---------- -------------- -------------
            20 RESEARCH       DALLAS
            60 nanchang       nanchang
      

  6.   

    在pl/sql上执行是没问题的但是在后台,用jdbc连接数据库,执行时就会报错。。
      

  7.   

    pl/sql是一个客户端工具,当然能识别数字字串到底转成number型不,但是在程式中,用jdbc调用执行,那就不行了,所以必须类型匹配!
    select * from table where id in(1,2)
      

  8.   

    在java中拼sql字符串的时候出错了,实际拼成了:
    select * from table where id in ('1, 2')你试试在log里输出你的sql语句
      

  9.   

    oracle会自己做隐式转换.应该不是数据库的原因吧.
      

  10.   

    感觉你还是确认下,in的数据里有没有非数字类型的,比如'a1',都是数字不会报错的.
      

  11.   

    select * from table where id in ('1', '2') 按道理来说在数据库里可以做隐式转换的 所以在plsql可以执行  在你的控制台不行 环境不一样肯定不行的
    而且 你这样也没必要这样
    where id in (1,2) 这样不是很好 非得那样 有点多余