字符串如下:004-007号,004-006号,10188,10239,004-005号,010-003号,010-002号,030-001号,030-002号,006号,008-003号,054-001号,038,012,170-002号,181-001号,181-002号,175-003号,008-008号,175-006号,170-006号,170-005号,175-001号
求结果集如下:
ID VALUE
1 004-007号
2 004-006号
3 10188
4 10239
5 004-005号
6 010-003号
7 010-002号
8 030-001号
9 030-002号
10 006号
11 008-003号
12 054-001号
13 038
14 012
15 170-002号
16 181-001号
17 181-002号
18 175-003号
19 008-008号
20 175-006号
21 170-006号
22 170-005号
23 175-001号
两种快捷的实现方式如下:
1、借助系统函数
[php]
SQL> select rownum id, column_value value from table(sys.odcivarchar2list('004-007号','004-006号','10188','10239','004-005号','010-003号','010-002号','030-001号','030-002号','006号','008-003号','054-001号','038','012','170-002号','181-001号','181-002号','175-003号','008-008号','175-006号','170-006号','170-005号','175-001号'));
ID VALUE
---------- ------------------------------
1 004-007号
2 004-006号
3 10188
4 10239
5 004-005号
6 010-003号
7 010-002号
8 030-001号
9 030-002号
10 006号
11 008-003号
12 054-001号
13 038
14 012
15 170-002号
16 181-001号
17 181-002号
18 175-003号
19 008-008号
20 175-006号
21 170-006号
22 170-005号
23 175-001号
23 rows selected.
--
[/php]
2、借助正则表达式
[php]
SQL> select rownum rn,TRIM(REGEXP_SUBSTR('004-007号,004-006号,10188,10239,004-005号,010-003号,010-002号,030-001号,030-002号,006号,008-003号,054-001号,038,012,170-002号,181-001号,181-002号,175-003号,008-008号,175-006号,170-006号,170-005号,175-001号', '[^,]+', 1, level)) value from dual
2 connect by level <= length(regexp_replace('004-007号,004-006号,10188,10239,004-005号,010-003号,010-002号,030-001号,030-002号,006号,008-003号,054-001号,038,012,170-002号,181-001号,181-002号,175-003号,008-008号,175-006号,170-006号,170-005号,175-001号','[^,]*'))+1;
RN VALUE
---------- ------------------------------
1 004-007号
2 004-006号
3 10188
4 10239
5 004-005号
6 010-003号
7 010-002号
8 030-001号
9 030-002号
10 006号
11 008-003号
12 054-001号
13 038
14 012
15 170-002号
16 181-001号
17 181-002号
18 175-003号
19 008-008号
20 175-006号
21 170-006号
22 170-005号
23 175-001号
23 rows selected.
--
[/php]
注:上述方式均需在10g以上版本中运行。
阅读(2466) | 评论(2) | 转发(0) |