Oracle模糊查询
现在有两张表 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这两条记录,然后用这两条记录查询出“开会”,“出差”这两条记录
------解决方案--------------------
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  赵四 出差