3,499
社区成员
发帖
与我相关
我的任务
分享
SQL>
SQL> WITH t1 AS (
2 SELECT '11' row_id,'1' item_no FROM DUAL UNION ALL
3 SELECT '22' ,'2' FROM DUAL UNION ALL
4 SELECT '33' ,'3' FROM DUAL UNION ALL
5 SELECT '44' ,'4' FROM DUAL UNION ALL
6 SELECT '55' ,'5' FROM DUAL)
7 , t2 AS (
8 SELECT '1,2,50' item_no,'2011-06-21' idate FROM DUAL UNION ALL
9 SELECT '3' ,'2011-06-22' FROM DUAL UNION ALL
10 SELECT '4' ,'2011-06-23' FROM DUAL)
11 select t1.row_id,t3.idate
12 from t1,(
13 select distinct regexp_substr(item_no,'[^,]+',1,level) item_no,idate
14 from t2
15 connect by level<=length(item_no)-length(replace(item_no,',',''))+1) t3
16 where t1.item_no=t3.item_no
17 /
ROW_ID IDATE
------ ----------
11 2011-06-21
22 2011-06-21
33 2011-06-22
44 2011-06-23
SQL>
SQL>
SQL> WITH t1 AS (
2 SELECT '11' row_id,'1' item_no FROM DUAL UNION ALL
3 SELECT '22' ,'2' FROM DUAL UNION ALL
4 SELECT '33' ,'3' FROM DUAL UNION ALL
5 SELECT '44' ,'4' FROM DUAL)
6 , t2 AS (
7 SELECT '1,2' item_no,'2011-06-21' idate FROM DUAL UNION ALL
8 SELECT '3' ,'2011-06-22' FROM DUAL UNION ALL
9 SELECT '4' ,'2011-06-23' FROM DUAL)
10 select t1.row_id,t1.item_no,t2.idate
11 from t1,t2
12 where instr(t2.item_no,t1.item_no)>0
13 /
ROW_ID ITEM_NO IDATE
------ ------- ----------
11 1 2011-06-21
22 2 2011-06-21
33 3 2011-06-22
44 4 2011-06-23
select t1.row_id,t1.item_no,t2.idate
from t1,t2
where instr(t2.item_no,t1.item_no)>0
/
SQL> WITH t1 AS (
2 SELECT '11' row_id,'1' item_no FROM DUAL UNION ALL
3 SELECT '22' ,'2' FROM DUAL UNION ALL
4 SELECT '33' ,'3' FROM DUAL UNION ALL
5 SELECT '44' ,'4' FROM DUAL
6 ),t2 AS (
7 SELECT '1,2' item_no,'2011-06-21' idate FROM DUAL UNION ALL
8 SELECT '3' ,'2011-06-22' FROM DUAL UNION ALL
9 SELECT '4' ,'2011-06-23' FROM DUAL
10 )
11 SELECT t1.*,
12 t2.idate
13 FROM t1,
14 t2
15 WHERE instr(',' || t2.item_no || ',', ',' || t1.item_no || ',') > 0;
ROW_ IT IDATE
---- -- --------------------
11 1 2011-06-21
22 2 2011-06-21
33 3 2011-06-22
44 4 2011-06-23