分隔字串實現列轉行
字串如下: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以上版本中執行。
求結果集如下:
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以上版本中執行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-483605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉貼_字串分隔_拆分字串
- oracle拆分逗號分隔字串 實現splitOracle字串
- Kettle實現行轉列
- sql實現行轉列SQL
- js分隔字串生成陣列產生空字串元素解決方案JS字串陣列
- delphi 中分隔符分隔的字串字串
- SQL分隔字串的儲存過程 (轉)SQL字串儲存過程
- 只需設定分隔符,完全自適應行轉列~~
- [Shell] awk 實現列轉行例子
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- js實現的字串和陣列的相互轉換JS字串陣列
- 以上程式碼使用good分隔字串生成一個陣列。Go字串陣列
- 使用rownum及replace實現行轉列
- 老生常談SQL2005語句實現行轉列,列轉行SQL
- List,DataTable實現行轉列的通用方案
- decode實現行轉列的查詢
- jq用逗號分隔字串字串
- 影片直播app原始碼,JS使用陣列方法實現字串反轉APP原始碼JS陣列字串
- Python科研武器庫 - 字串操作 - 字串分隔 split()、rsplit()Python字串
- 直播平臺原始碼,FlinkSQL實現行轉列原始碼SQL
- shell佇列實現執行緒併發控制(轉)佇列執行緒
- Oracle 11g Pivot函式實現行轉列Oracle函式
- SQL 行轉列,列轉行SQL
- Mysql - 行轉列、列轉行MySql
- js實現字串轉JSON格式字串JSON
- shell字串按照指定分隔符切割字串
- 字串分隔 (抄自 atgc的部落格)字串GC
- 【記錄】sqlserver列轉行查詢 並將查詢結果用逗號分隔開SQLServer
- byte陣列轉字串?陣列字串
- 用listagg函式分組實現列轉行函式
- Excel實現動態行轉列(資料透視表)Excel
- mysql5中使用過程實現行轉列MySql
- Oracle 11g使用UNPIVOT函式實現“列轉行”Oracle函式
- 逗號分隔,輸出陣列陣列
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- python實現字串轉換整數Python字串
- 使用數字分隔字串程式碼例項字串
- 拆分含有多種分隔符的字串字串