现在有两张表 A表与B表。A表中的ID在B表中是以逗号分隔的形式保存的。现在要做一件事首先从A表中的Name用Like模糊查询出匹配的ID。然后把这些ID做条件。在B表中查询想对应的记录例:
A:
  ID          Name
 110          张三
 120          张王
 10           李四
 45           赵四B:
  AID           Name
 10,45          开会
 110            工作
 110,45         出差如:我查询输入“四”条件,得到的应该是10,45这两条记录,然后用这两条记录查询出“开会”,“出差”这两条记录

解决方案 »

  1.   

    SQL> select t.*,t1.name from (
      2  select '110' as id, '张三' as name
      3    from dual
      4  union
      5  select '120', '张王'
      6    from dual
      7  union
      8  select '10', '李四'
      9    from dual
     10  union
     11  select '45', '赵四' from dual
     12  ) t, (
     13  select distinct b, name
     14    from (select regexp_substr(aid, '[^,]+', 1, level) as b, name
     15            from (select '10,45' as aid, '开会' as name
     16                    from dual
     17                  union
     18                  select '110', '工作'
     19                    from dual
     20                  union
     21                  select '110,45', '出差' from dual)
     22          connect by level <= 4)
     23   where b is not null
     24  ) t1 where t.id = t1.b;
     
    ID  NAME NAME
    --- ---- ----
    10  李四 开会
    110 张三 出差
    110 张三 工作
    45  赵四 开会
    45  赵四 出差