【发布时间】:2018-11-27 12:51:33
【问题描述】:
我有一个名为“Table”的表和名为“History”的属性。这个历史属性的值如下:
1 Finished (30-05-2018);
2 InProgress (25-05-2018); Rejected(26-05-2018); InProgress (28-05-2018); Finished (30-05-2018);
3 InProgress (25-05-2018); Finished (30-05-2018);
我想用分号 (;) 分割这个属性,并为每个历史部分创建一个新行。因此,对于上面代码/示例中的行,它应该创建 7 行。我已经通过下面的代码成功地做到了这一点。问题是我想为此表中的每一行执行此操作。这里出现了一个问题:当我删除 WITH 中的 WHERE 条件时,我得到了许多结果行以及许多 NULL 值。我究竟做错了什么?
WITH DATA AS
( SELECT "WorkID" w,"History" his FROM Table
where "WorkID" = 75671
)
SELECT w, trim(regexp_substr(his, '[^;]+', 1, LEVEL)) his
FROM DATA
CONNECT BY regexp_substr(his , '[^;]+', 1, LEVEL) IS NOT NULL
【问题讨论】:
标签: sql oracle split common-table-expression