在 SQL 中将分隔的行拆分为列
Posted
技术标签:
【中文标题】在 SQL 中将分隔的行拆分为列【英文标题】:Split delimited row to column in SQL 【发布时间】:2015-01-21 06:01:39 【问题描述】:我有一个包含值的表:
表 1:表 1 id层次结构 1 :A:B:C 2:P:Q:R:S:T 3 :M:N
我们如何将其拆分如下:
表 1:表 2 id col1 col2 col3 col4 col5 col6 col7 1 C B A N/A N/A N/A N/A 2 T S R Q P N/A N/A 3 N M N/A N/A N/A N/A N/A
该行包含分隔的列更改。
请通过使用游标在 SQL/PLSQL 中提供完整的解决方案来帮助我。
【问题讨论】:
这里有一个实现游标的教程:tutorialspoint.com/plsql/plsql_cursors.htm 【参考方案1】:我自己回答了,因为我成功找到了解决方案:
选择 table1.id, 案子 WHEN REGEXP_COUNT(b.Hirerachy, ':') > 0 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')) 其他“不适用” 结束“col1”,
案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 1 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-1) 其他“不适用” 结束“col2”,
案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 2 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-2) 其他“不适用” 结束“col3”,
案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 3 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-3) 其他“不适用” 结束“col4”,
案例 WHEN REGEXP_COUNT(b.Hireachy, ':') > 4 那么 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-4) 其他“不适用” 结束“col5”,
案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 5 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-5) 其他“不适用” 结束“col6”,
案例 WHEN REGEXP_COUNT(b.Hirerachy, ':') > 6 那么 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-6) 其他“不适用” 结束“col7”,
案例 WHEN REGEXP_COUNT(b.Hireachy, ':') > 7 那么 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-7) 其他“不适用” 结束“col8”,
案例 WHEN REGEXP_COUNT(b.Hirerachy, ':') > 8 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-8) 其他“不适用” 结束“col9”,
案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 9 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-9) 其他“不适用” 结束“col10”,
案例 WHEN REGEXP_COUNT(b.Hirerachy, ':') > 10 然后 regexp_substr(层次结构,'[^:]+',1,REGEXP_COUNT(b.Hirerachy,':')-10) 其他“不适用” 结束“col11”
来自表 1
【讨论】:
以上是关于在 SQL 中将分隔的行拆分为列的主要内容,如果未能解决你的问题,请参考以下文章