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行列轉換及pivot子句的用法Oracle
- T-SQL——將字串轉換為多列SQL字串
- mysql行列轉換詳解MySql
- InputStream流轉換成String字串字串
- json字串 轉換為陣列JSON字串陣列
- JavaScript 字串轉換為陣列JavaScript字串陣列
- 字串json陣列怎麼轉換成jsonobject型別字串JSON陣列Object型別
- 記錄一個行列轉換
- JavaScript將陣列轉換為字串JavaScript陣列字串
- js 陣列,字串,json互相轉換陣列字串JSON
- PHP 物件轉換成陣列PHP物件陣列
- 陣列轉換成List集合陣列
- 陣列與字串方法與相互轉換陣列字串
- pdf轉換成word,免費轉換
- Oracle轉換PostgresOracle
- Oracle 12c nocdb轉換成cdbOracle
- 字串-大小寫轉換字串
- list與字串轉換字串
- scala常用操作-Tuple元祖轉換成String字串字串
- JZ-049-把字串轉換成整數字串
- Spark實現行列轉換pivot和unpivotSpark
- JavaScript陣列與字串相互轉換 join、splitJavaScript陣列字串
- Java如何將字串轉換為字元陣列?Java字串字元陣列
- u8 陣列轉換成 string陣列
- 將字串陣列轉換為浮點數陣列字串陣列
- Oracle 查詢轉換Oracle
- Restcloud ETl實踐之資料行列轉換RESTCloud
- JavaScript字串大小寫轉換JavaScript字串
- JavaScript字串轉換數字JavaScript字串
- 字串轉換整數(atoi)字串
- 字串 列表 字典 互相轉換字串
- Oracle實驗(02):轉換 & 轉譯Oracle
- char轉換成int
- 圖片格式轉換,JPG圖片轉換成PDF
- 【Go】IP地址轉換:數字與字串之間高效轉換Go字串
- Oracle 12CR2查詢轉換之星型轉換Oracle
- Oracle SQL_ID轉換成SQL_HASH_VALUEOracleSQL
- 劍指offer——把字串轉換成整數C++字串C++
- 使用vue實現行列轉換的一種方法。Vue