我想找出一组数(如100,12,456...)在下面这个表的A字段中,出现过的数。并且同时得到它的B字段的值。      A           B
1  111,234,123     31
2  12,32,456       32
3  456,12,1        33
结果形如:111 31
234 31
12  33
.......我想过用聚合函数,但得不到B字段得值,还请各位前辈赐教了。谢谢

解决方案 »

  1.   

    补充一下(如100,12,456...)假设是C表中字段id的项,一个数是一条记录
      

  2.   

    create table tab1(a varchar2(20),b integer);
    create table tab2(id integer);
    insert into tab1 values('111,234,123',31);
    insert into tab1 values('12,32,456',32);
    insert into tab1 values('456,12,1',33);
    insert into tab2 values(111);
    insert into tab2 values(234);
    insert into tab2 values(12);
    commit;
    SQL> select id,b from tab1,tab2 where instr(to_char(','||a||','),to_char(','||id||','))>0;        ID          B
    ---------- ----------
           111         31
           234         31
            12         32
            12         33
    这样可以吗?
      

  3.   

    a字段是111,234,123这种数字,那么我查找A字段里面包括12这个数字时,会把123也查出来,所以要连逗号一起查,那么需要查找的就是,12,这样的内容了,所以先在A字段两面都加上逗号,以免查不到第一个和最后一个值.
    如果能查找到那么instr的返回值就会大于0.
      

  4.   

    现在有个问题前辈。
    我的
    a表是用聚合函数取出来的,这样写,有点错。select u.truename,y.adduser from userinfo u,
    (select strcat(t.ccids)as aa,t.adduser
      from flowlog t 
      where t.flowinfoid = 104 
      group by t.adduser
    ) y
    where instr(to_char(','||y||','),to_char(','||u||','))>0;
      

  5.   

    对了,to_char()可以去掉,只是会显得比较乱,不知道还有别的比较好的方法没.