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 赵四 出差