有表a:
id    fid 
----------------
1    f1,f2
2    f4,f5,f6表b:
fid    fname
-------------
f1     name1
f2     name2
f3     name3
f4     name4
..     .....查询结果为:
id    fid         fname
------------------------------------
1      f1,f2      name1,name2
2      f4,f5,f6   name4,name5,name6

解决方案 »

  1.   


    --呵呵 满足题目要求 但是不切实际
    select id,fid,replace(FID,'f','name') fname from tb1
      

  2.   


    --修改了一下,这个应该可以
    declare
       sql_str varchar2(32767);
    begin
         sql_str:='create table tab_long (';
         for i in 0..23  loop
             for j in 0..11 loop
              sql_str:=sql_str||'v'||lpad(i,2,0)||lpad(j,2,0)||' varchar2(10)'||',' ;
             end loop;
         end loop;
         sql_str:=rtrim(sql_str,',');
         sql_str:=sql_str||')';
         execute immediate sql_str;
    end;
      

  3.   


    --刚忘了乘5了
    declare
       sql_str varchar2(32767);
    begin
         sql_str:='create table tab_long (';
         for i in 0..23  loop
             for j in 0..11 loop
              sql_str:=sql_str||'v'||lpad(i,2,0)||lpad(5*j,2,0)||' varchar2(10)'||',' ;
             end loop;
         end loop;
         sql_str:=rtrim(sql_str,',');
         sql_str:=sql_str||')';
         execute immediate sql_str;
    end;
      

  4.   

    wm_concat试一下看看。。我在公司用的9I没法试,10G里面是有个wm_concat方法的。
      

  5.   

    你的查询结果是怎么出来的,说清楚点,name5,name6都没有,怎么会出来???
      

  6.   

    你的查询结果是怎么出来的,说清楚点,name5,name6都没有,怎么会出来???
      

  7.   

    如果你的oracle数据库是10+,那么你试试下面的:
    select a.id,a.fid,wm_concat(b.fname)
      from a ,b
      where a.fid like '%'||b.fid||'%'
    group by a.id,a.fid
      
      

  8.   

    wm_concat 完解.create table a (id number,fid varchar2(50));
    insert into a (id,fid)
    select 1,'fi,f2' from dual 
    union
    select 2,'f4,f5,f6' from dual 
    commit;
    create table b (fid varchar2(50),fname varchar2(50));
    insert into b(fid,fname)
    select 'f1','name1' from dual
    union
    select 'f2','name2' from dual
    union 
    select 'f3','name3' from dual
    union 
    select 'f4','name4' from dual
    union 
    select 'f5','name5' from dual
    union 
    select 'f6','name6' from dual
    commit;select a.id,a.fid,wm_concat(b.fname)
      from a ,b
      where a.fid like '%'||b.fid||'%'
    group by a.id,a.fid
      

  9.   


    with ta as(
         select 1 id,'f1,f2' fid from dual union all
         select 2,'f4,f5,f6' from dual)
    ,tb as(
        select 'f1' fid,'name1' fname from dual union all
        select 'f2','name2' from dual union all
        select 'f3','name3' from dual union all
        select 'f4','name4' from dual union all
        select 'f5','name5' from dual union all
        select 'f6','name6' from dual)
    select ta.id id,
           ta.fid fid,
           wm_concat(tb.fname) fname
    from ta,tb
    where instr(ta.fid,tb.fid)>0
    group by ta.id,ta.fid;
            ID FID      FNAME
    ---------- -------- --------------------------------------------
             1 f1,f2    name1,name2
             2 f4,f5,f6 name4,name6,name5
      

  10.   


    oracle 解决匹配的几种方法