本帖最后由 assoloist 于 2012-11-07 21:07:00 编辑

解决方案 »

  1.   

    SELECT usr_id from usertabel where usr_nam in  ('张三','李四') 
    后面in
    是这样,是个集合:
    select name from(select '张三'  name from dual union all
         select '李四' from dual )
    而不是 select '张三,李四' from  dual
      

  2.   

    SELECT usr_id from usertabel where usr_nam in  (select chr(39)||replace(per_dsc,',',chr(39)||','||chr(39))||chr(39)  FROM datatable where pkvalue=1088 )
    相当于
    SELECT usr_id from usertabel where usr_nam in ('''张三'',''李四''');-
    当然查不到结果了
      

  3.   


    不是的,replace(per_dsc,',',chr(39)||','||chr(39))相当于把中间的逗号换成 ','   
    然后再加上replace函数的前后两个chr(39),得出结果是'张三','李四'
      

  4.   

    select * from a where name in ('张三','李四')

    select * from a where name in (select '''张三'',''李四''' from dual)
    不是同一意思的
    in 里面如果是select语句,配对是select语句出来的每条记录,一条记录相当于in ('张三','李四')方式里的张三,所以如果你的select语句如果出来两条记录,分别是张三和李四,那么才跟in ('张三','李四')等效,而你的语句只出来一条张三,李四合成的记录,会当成一条记录去配对的,所以配不上,结果不对。
      

  5.   

    你的usertabel表里usr_name没有'张三','李四'这个,所以没记录