1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| SQL> set echo on
SQL> set linesize 200
SQL> set pagesize 100
SQL> column list_c1 format A5
SQL>
SQL> drop table t
2 /
Table dropped.
SQL> create table t (c1 varchar2(20), c2 varchar2(20))
2 /
Table created.
SQL> insert into t values ('A,B,C,D','Blabla');
1 row created.
SQL> insert into t values ('E,F,G','Blibli');
1 row created.
SQL> insert into t values ('K,M,O,P,T,R','Blublu');
1 row created.
SQL> commit
2 /
Commit complete.
SQL> SELECT t.c2, x.column_value AS list_c1
2 FROM t
3 CROSS JOIN TABLE(
4 cast(multiset(
5 SELECT substr( ','||c1||',',
6 instr( ','||c1||',', ',', 1, rownum )+1,
7 instr( ','||c1||',', ',', 1, rownum+1 )
8 -instr( ','||c1||',', ',', 1, rownum )-1
9 )
10 FROM dual
11 connect BY level <= length(c1)-length(REPLACE(c1,',',''))+1
12 ) AS sys.odcivarchar2list )
13 ) x
14 /
C2 LIST_
-------------------- -----
Blabla A
Blabla B
Blabla C
Blabla D
Blibli E
Blibli F
Blibli G
Blublu K
Blublu M
Blublu O
Blublu P
Blublu T
Blublu R
13 rows selected. |
Partager