通过解析列中的字符串值将表中的一行拆分为多行

Posted

技术标签:

【中文标题】通过解析列中的字符串值将表中的一行拆分为多行【英文标题】:split a row in a table into multiple rows by parsing the string value in the column 【发布时间】:2013-04-30 12:58:57 【问题描述】:

我需要将一行拆分为多行。

一列中的样本值是这样的。

Message for status: warnings: [w1,w2] | errors: [e1,e2] | other_errors: [e3]

总消息在一个列值中。 我需要将它拆分为多行,例如

w1
w2
e1
e2
e3
有人可以帮我怎么做吗?

【问题讨论】:

Splitting comma separated string in a PL/SQL stored proc 的可能重复项 出于选择的目的,还是要将这些行插入另一个表? 我在选择中需要这个。 如果选择查询应该让我得到这样的结果,则输出。可能存储在另一个表中。 【参考方案1】:

这是一种拆分成列的方法:

select
  ltrim(regexp_substr(translate(col1,'[]',',,'),',([^,]+)', 1,1) ,',') s1,
  ltrim(regexp_substr(translate(col1,'[]',',,'),',([^,]+)', 1,2) ,',') s2,
  ltrim(regexp_substr(translate(col1,'[]',',,'),',([^,]+)', 1,4) ,',') s3,
  ltrim(regexp_substr(translate(col1,'[]',',,'),',([^,]+)', 1,5) ,',') s4,
  ltrim(regexp_substr(translate(col1,'[]',',,'),',([^,]+)', 1,7) ,',') s5
from
  t1;

那你就需要unpivot了,SE上有很多例子。

【讨论】:

以上是关于通过解析列中的字符串值将表中的一行拆分为多行的主要内容,如果未能解决你的问题,请参考以下文章

根据列值将一行分解/拆分为多行

拆分2列中的特殊字符并在oracle中合并为多行

Pandas: 如何将一列中的文本拆分为多行? | Python

Oracle通过一个字段的值将一条记录拆分为多条记录

将多行单元拆分为不同的行

将我的 Access 表导出到 Excel,但将列中的不同值拆分到不同的工作表中