【发布时间】:2015-10-13 23:21:20
【问题描述】:
我有一张这样的桌子
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 将返回逗号,的位置,然后根据该位置分隔子字符串。请记住,即使使用 12c,SUBSTR + INSTR 方法仍然比 REGEX 更快。 -
我没有那样存储它,但我必须写一个从那个系统中提取数据的报告。当我第一次发现这种情况时,我的第一反应是它违反了第一范式。
-
"它违反了第一范式" 当然它违反了基本规则。无论如何,我想,您现在可以应用解决方法。并且,提出设计修复作为您组织的永久解决方案。您甚至可以创建虚拟列。祝你好运!