oracle行列轉換-字串轉換成多列
有表t_col_str,資料如下:
現要將表中c123列,根據逗號,拆分成多列。
1)substr + instr
適用範圍:8i,9i,10g及以後版本
注:上面程式碼可簡化為下面格式:
2)regexp_substr
適用範圍:10g及以後版本
點選(此處)摺疊或開啟
-
SQL> select * from t_str_col;
-
-
ID C123
-
---------- --------------------
-
-
1 v11,v21,v31
-
2 v12,v22,
-
3 v13,,v33
-
4 ,v24,v34
-
5 v15,,
-
6 ,,v35
-
7 ,,
-
- 已選擇7行。
現要將表中c123列,根據逗號,拆分成多列。
1)substr + instr
適用範圍:8i,9i,10g及以後版本
點選(此處)摺疊或開啟
-
SQL> SELECT id,
-
2 c123,
-
3 substr(c123, 1, instr(c123 || ',', ',', 1, 1) - 1) c1,
-
4 substr(c123,
-
5 instr(c123 || ',', ',', 1, 1) + 1,
-
6 instr(c123 || ',', ',', 1, 2) - instr(c123 || ',', ',', 1, 1) - 1) c2,
-
7 substr(c123,
-
8 instr(c123 || ',', ',', 1, 2) + 1,
-
9 instr(c123 || ',', ',', 1, 3) - instr(c123 || ',', ',', 1, 2) - 1) c3
-
10 FROM t_str_col
-
11 ORDER BY 1;
-
-
ID C123 C1 C2 C3
-
---------- ------------------------------ ---------- ---------- ----------
-
-
1 v11,v21,v31 v11 v21 v31
-
2 v12,v22, v12 v22
-
3 v13,,v33 v13 v33
-
4 ,v24,v34 v24 v34
-
5 v15,, v15
-
6 ,,v35 v35
-
7 ,,
-
- 已選擇7行。
點選(此處)摺疊或開啟
-
SQL> edit
-
已寫入 file afiedt.buf
-
-
1 SELECT id,
-
2 c123,
-
3 substr(c123, 1, instr(c123, ',', 1, 1) - 1) c1,
-
4 substr(c123,
-
5 instr(c123, ',', 1, 1) + 1,
-
6 instr(c123, ',', 1, 2) - instr(c123, ',', 1, 1) - 1) c2,
-
7 substr(c123,
-
8 instr(c123, ',', 1, 2) + 1) c3
-
9 FROM t_str_col
-
10* ORDER BY 1
-
SQL> /
-
-
ID C123 C1 C2 C3
-
---------- ------------------------------ ---------- ---------- ----------
-
-
1 v11,v21,v31 v11 v21 v31
-
2 v12,v22, v12 v22
-
3 v13,,v33 v13 v33
-
4 ,v24,v34 v24 v34
-
5 v15,, v15
-
6 ,,v35 v35
-
7 ,,
-
-
已選擇7行。
-
- SQL>
2)regexp_substr
適用範圍:10g及以後版本
點選(此處)摺疊或開啟
-
SQL> SELECT id,
-
2 c123,
-
3 rtrim(regexp_substr(c123 || ',', '.*?' || ',', 1, 1), ',') AS c1,
-
4 rtrim(regexp_substr(c123 || ',', '.*?' || ',', 1, 2), ',') AS c2,
-
5 rtrim(regexp_substr(c123 || ',', '.*?' || ',', 1, 3), ',') AS c3
-
6 FROM t_str_col
-
7 ORDER BY 1;
-
-
ID C123 C1 C2 C3
-
---------- ------------------------------ ---------- ---------- ----------
-
-
1 v11,v21,v31 v11 v21 v31
-
2 v12,v22, v12 v22
-
3 v13,,v33 v13 v33
-
4 ,v24,v34 v24 v34
-
5 v15,, v15
-
6 ,,v35 v35
-
7 ,,
-
- 已選擇7行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21251711/viewspace-1067535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle行列轉換-多列轉換成字串Oracle字串
- oracle行列轉換-多行轉換成字串Oracle字串
- oracle行列轉換-行轉列Oracle
- oracle行列轉換-列轉行Oracle
- 行列轉換,列行轉換統計
- Oracle-行列轉換Oracle
- Oracle 行列轉換 經典Oracle
- Oracle 行列轉換總結Oracle
- Oracle 行列轉換小結Oracle
- Oracle行列轉換總結Oracle
- 行列轉換
- javascript如何將字串轉換成陣列JavaScript字串陣列
- oracle和mysql的行列轉換OracleMySql
- 將字串轉換成Bitmap型別 或者 將Bitmap轉換成字串字串型別
- Kettle行列轉換
- 偽行列轉換!
- 行列轉換sqlSQL
- Oracle多行轉換成字串方法總結Oracle字串
- 行列轉換 交叉表 (轉)
- T-SQL——將字串轉換為多列SQL字串
- pivot、unpivot實現oracle行列轉換Oracle
- Oracle--SQL行列轉換實戰OracleSQL
- MySQL行列轉換拼接MySql
- 行列轉換之大全~~~
- sql server 行列轉換SQLServer
- 將整數轉換成字串字串
- Oracle行列轉換及pivot子句的用法Oracle
- JavaScript 字串轉換為陣列JavaScript字串陣列
- javascript字串和陣列轉換JavaScript字串陣列
- mysql行列轉換詳解MySql
- sql server行列轉換案例SQLServer
- 【SQL 學習】行列轉換SQL
- 【SQL】行列轉換方法示例SQL
- Shell練習 行列轉換
- 複雜的行列轉換
- 試驗Oracle中實現行列轉換的方法(轉)Oracle
- 將多個路徑字串轉換成XML文件樹字串XML
- PHP 物件轉換成陣列PHP物件陣列