Chinaunix首页 | 论坛 | 博客
  • 博客访问: 555456
  • 博文数量: 43
  • 博客积分: 8000
  • 博客等级: 中将
  • 技术积分: 1510
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 15:07
文章分类

全部博文(43)

文章存档

2011年(1)

2009年(12)

2008年(30)

我的朋友

分类: Oracle

2009-03-23 18:24:50

字符串如下: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以上版本中运行。
阅读(2428) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-23 17:42:29

Good, HAHA...

chinaunix网友2009-06-16 22:21:01

强,牛人