我有一个像逗号分隔的字符串成列的Oracle分裂
Charge_num mapping_col
--------- -----------
p1.pm.100 1.1.1,1000
p1.pm.110 1.2.1,1000
p1.pm.120 1.3.1,1000
一个表,我需要的“mapping_col”分成两列是这样的:
Charge_num wbs obs
--------- --- ---
p1.pm.100 1.1.1 1000
p1.pm.110 1.2.1 1000
p1.pm.120 1.3.1 1000
首先,为什么要将数据存储为分隔字符串?你正在违反**正常化**。无论如何,作为一种解决方法,只需使用'SUBSTR'和'INSTR'。 INSTR将返回逗号','的位置,然后根据该位置分开substr。请记住,即使使用12c,SUBSTR + INSTR方法仍然比REGEX更快。 –
我没有这样保存,但我必须编写一份报告,从该系统中提取数据。当我第一次发现这种情况时,我的第一次呼吁是它违反了第一种正常形式。 – user2378895
“*它违反了第一范式*”当然这违反了基本规则。无论如何,我想,你现在可以应用这个解决方法。并且,提出一个设计修正作为您的组织的永久解决方案。你甚至可以创建**虚拟列**。祝你好运! –