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

时间:2013-04-30 12:58:57

标签: sql oracle csv tokenize

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

列中的样本值是这样的。

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

以上总消息是一列值。 我需要将它分成多行,如

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

1 个答案:

答案 0 :(得分:0)

以下是分割成列的一种方法:

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;

然后你需要取消它,并且SE上有很多例子。