select id,name
from b
where id||':'||name in (select value from a)
这个意思?

解决方案 »

  1.   


    表a  字段value   值为  id||':'||name
    表b  字段id         值为   1,2,3
        字段name  值为   a,b,c
    结果是  select   id||':'||name from b 查询到1:a 2:b 3:c(中间分号)
    但是因为这个value值不确定有可能是name||':'||id 或者其他
    所以要结合表a但是sql怎么写呢
      

  2.   

    select * from a,b where a.value=b.id||':'||b.name
      

  3.   

    动态SQL,因为你这个牵涉到用具体的值来做列名
      

  4.   


    select replace(
        replace(UPPER(a.value),'ID',B.ID)
        ,'NAME',B.NAME) from a,b
      

  5.   

    好像不行啊,这样查不就b表中value的数据是a表中的id和name值,但是我的表b字段value值存的就是(id||':'||name)要查询的规则!!!他有可能是(name||':'||id)这样!!!
      

  6.   

    你这是把里面的ID和NAME替换成值,但是这种要知道value里面是什么,一换成其他的就不行了!!!
      

  7.   

    比如我把value 换成其他字段id||':'||name||':'||其他表B中的字段这样就不行了,而且这样替换保留了||":"||客户只是要分号而已!!
      

  8.   

    你这是把里面的ID和NAME替换成值,但是这种要知道value里面是什么,一换成其他的就不行了!!!
    不这样写的话只能是使用动态语句实现了,没有其他方法
      

  9.   

    declare
      v_sql varchar2(1000);
      v_str varchar2(500);
      type curtype   is     REF    cursor;
      A  curtype;
    begin
      select value into v_sql from a;
      v_sql:='select '||v_sql||' from b';
      open a for v_Sql;
      loop
        fetch a into v_str
        exit when a %notfound;
        --你的循环操作
      end loop;
      close a;
    end;
      

  10.   

    查出A表关系 拼装后做动态SQL处理