【发布时间】:2017-08-14 07:49:49
【问题描述】:
我有一些与此非常相似的数据:
ID STATUS EMPL
1 Created;Solved;Closed John;Terry;Martin
当然,每行中的值的数量可以从 1 到 n。我发现了一些仅针对 1 列的建议(使用 Connect by with regexp_substr)
有什么方法(SQL 或 PL/SQL 方式)可以获得所需的输出:
ID STATUS EMPL
1 Created John
1 Solved Terry
1 Closed Martin
谢谢
【问题讨论】:
-
写一个函数或SP。在其中有一个游标并遍历每一行。在每一行上,用 (;) 拆分您的数据,如问题所示。现在有一个临时表并继续添加。
-
这将在您的应用层中非常更容易处理,例如爪哇。数据库不是清理数据的最佳场所。
-
首先规范化或至少使用集合类型。使用 CSV 是一个非常糟糕的主意。
-
@TimBiegeleisen - 我意识到这并不理想,但这就是我工作的公司的做法 - 我无能为力......
-
我同意@TimBiegeleisen,拥有前端代码会很好。如果您有任何阻碍您的政策,请使用 SQL 选项。
标签: sql oracle plsql delimiter