【发布时间】:2021-04-13 20:39:06
【问题描述】:
我遇到了 oracle 主题的问题
我们有一个表,其中一个列存储用逗号 (,) ex 分隔的数据
| id | type | item |
|---|---|---|
| 1 | 1 | 1234567890,A,asd,12345 |
| 2 | 1 | 8456321790,B,dde,12345 |
我们需要能够分离该值并得到类似的结果
| col1 | col2 | col3 | col4 |
|---|---|---|---|
| 1234567890 | A | asd | 12345 |
| 8456321790 | B | dde | 12345 |
但是这个列的数量不是固定的,某些类型可能是不同的数据湖,我们需要动态响应,例如
| id | type | item |
|---|---|---|
| 1 | 1 | 1234567890,A,asd,12345 |
| 2 | 1 | 8456321790,B,dde,12345 |
| 3 | 2 | 1111155555 |
| 4 | 2 | 7777788888 |
如果我运行 1 个进程,结果和以前一样
| col1 | col2 | col3 | col4 |
|---|---|---|---|
| 1234567890 | A | asd | 12345 |
| 8456321790 | B | dde | 12345 |
但如果我为类型 2 运行它,结果应该如下
| col1 |
|---|
| 1111155555 |
| 7777788888 |
我们可以将 item 字段转换为 varchar2 的表,但我们找不到如何将其转换为与光标一起使用。 任何的想法? 非常感谢你! 对不起,如果我的英语听不懂,那不是我的母语。
【问题讨论】:
-
嗯,这无疑是您必须处理的错误数据模型。您不能只提供查询中的最大列数并将未使用的列留空吗?六列示例:type 1: col1=1234567890, col2=A, col3=asd, col4=12345, col5=null, col6=null。 类型 2: col1=1111155555,col2=null,col3=null,col4=null,col5=null,col6=null。那会让事情变得更容易。或者更好的是:你能改变数据模型吗? :-)
标签: oracle