0
A
回答
2
這對於執行Split comma delimited strings in a table邏輯非常接近。唯一棘手的是你有行號和字符串本身。
你可以使用ROWNUM僞列,然後過濾掉那些字符串的領先SUBSTR與ROWNUM重複行。
例如,
設置
SQL> CREATE TABLE t(text VARCHAR2(4000));
Table created.
SQL>
SQL> INSERT INTO t SELECT '1,a,b,c' text FROM dual;
1 row created.
SQL> INSERT INTO t SELECT '2,d,e' text FROM dual;
1 row created.
SQL> INSERT INTO t SELECT '3,f,g' text FROM dual;
1 row created.
SQL> COMMIT;
Commit complete.
SQL>
SQL> SELECT * FROM t;
TEXT
----------
1,a,b,c
2,d,e
3,f,g
SQL>
溶液:分割字符串轉換成多行中的Oracle]的
SQL> WITH DATA AS(
2 SELECT ROWNUM rn, text FROM t
3 )
4 SELECT *
5 FROM
6 (SELECT rn,
7 trim(regexp_substr(t.text, '[^,]+', 1, lines.COLUMN_VALUE)) text
8 FROM DATA t,
9 TABLE (CAST (MULTISET
10 (SELECT LEVEL FROM dual CONNECT BY LEVEL <= regexp_count(t.text, ',')+1
11 ) AS sys.odciNumberList)) lines
12 )
13 WHERE TO_CHAR(rn) <> text
14 ORDER BY rn
15/
RN TEXT
---------- ----------
1 a
1 b
1 c
2 d
2 e
3 f
3 g
7 rows selected.
SQL>
+0
嗨,lalit謝謝你,但是很難理解,有沒有簡單的查詢 – Rajesh123
+0
@ Rajesh123好了,如果你瞭解REGEXP_SUBSTR,ROW_GENERATOR方法就不會有困難。可能你需要做一些學習和測試。谷歌周圍的關鍵字我告訴你。 –
相關問題
- 1. SQL排名選擇oracle
- 2. Oracle 10g SQL排序VARCHAR2
- 3. ORACLE SQL排序問題
- 4. Oracle sql group然後排序
- 5. Oracle SQL分區和排名
- 6. 在排序組上的行號。 Oracle SQL
- 7. 如何排除在Oracle SQL一列
- 8. 只讀取最新的排在Oracle SQL
- 9. 選擇排在Oracle
- 10. Oracle SQL Group按列值排列
- 11. Oracle pl/sql排列和組合
- 12. Oracle SQL按隨機順序排列
- 13. Oracle SQL中的分區排序
- 14. Oracle SQL的情況下,爲了排序
- 15. 的Oracle/SQL - 使用排序功能
- 16. Oracle SQL中的排序範圍值
- 17. Oracle sql:通過GROUP BY ROLLUP排序
- 18. 的Oracle SQL自定義排序
- 19. 轉換列中的Oracle SQL來排
- 20. 的Oracle SQL樞軸與排除
- 21. equalignorecase在Oracle SQL
- 22. 的Oracle SQL - 在
- 23. 在的Oracle SQL
- 24. 在Oracle SQL
- 25. DRY在Oracle SQL
- 26. Oracle SQL與Oracle PL/SQL
- 27. 發現在Oracle SQL
- 28. 就是在Oracle SQL
- 29. SQL - 如何在Oracle
- 30. 從Oracle在T-SQL
可能重複(HTTP://計算器。 com/questions/14328621/splitting-string-into-multiple-rows-in-oracle) – Mat
不是純粹的複製但是,因爲它不僅僅是將分隔的值分割成行,而是在單獨的列中重複前面的substr值。大多數情況下邏輯保持不變,但是,需要額外的規則來消除重複行,正如我在答案中所解釋的。 –