数据类型的问题
select data_name from tbl_data where id(---num类型---) in
(select ''||replace(SUBSTR(v_store_str,1,length(v_store_str)-1) ,'|',',')||'' business(----varchar2类型--如:234,或者 222,444,-----) from tbl_event)当business中存储的数据为333,444,332,这种时,查询出来的数据为null求指点疑难/解决方法

解决方案 »

  1.   

    你还是 贴个完整的sql吧~   有点乱~~
      

  2.   

    in 后面的子查询应该查询出行记录集,而不是逗号分隔的记录。
    所以,使用like 或 instr
      

  3.   


    楼主昨天不是问了一个同样的问题    貌似有解决了吧?http://topic.csdn.net/u/20110510/13/a1c5c66b-79bf-4535-b461-efc0433541eb.html
      

  4.   

    两个查询 ,主查询为  select * from aaa wher  id in();   id 是number 类型子查询中查询出来的结果集是字符串  22  或者22,44           是varchar2类型当子查询查询出来的结果为   22,44   时, 主查询  结果为    null
    我想问下  主查询中  id  与子查询中的结果集, 数据类型如何匹配,明白?
      

  5.   

    完整的sql  已经贴出来了,只是我添加了几个  注释,问题是主查询 的  id 数据类型,与子查询中的结果集  数据类型不一致,查询出来的结果有误,
    请指教
      

  6.   

    我找到方法了,就结贴了,           我改写之后,查出来得数据有问题,sql  太长,后面还有n个条件
    所以又来请教
      

  7.   

    楼主这个问题不是字段类型的问题 结果为null和这个没关系 这种情况不能用in 要用like或者instr
    我给你举个例子
    select * from table where id in ('12','23','34')会把table中id为12 23 34的数据都查出来
    但是 select * from table where id in (select ids from table2)肯定没结果 就算
    select ids from table2的查询结果等于'12','23','34'也没用,因为oracle会把子查询作为一个整体,类似于“'12','23','34'”而不是12 23 34这三个值,明白了?