我花了几天的时间寻找简单的解决方案来解决以下问题,我需要一些帮助。我有一个有两列的Oracle表,recid(Account Number)作为主键,xmlrecord存储所有的xml数据。我试图使用SQL查询为我们的应用程序导出我们有多值项目的值。排除数据损坏时,如果存在c1 m =“1”等,则始终存在相应的c2 m =“1”和c3 m =“1”。该表太大而无法多次提取每个项目,因此我需要在行的一次访问中将它们全部从xmlrecord中提取出来。我尝试了内部连接(1 = 1)和xmltables,但总是以返回的数据或新行中的每个新匹配结束NULLS。来自多个元素的Oracle SQL extractvalue
RECID XMLRECORD
-----------------------------------
0000001 <row><c1>test</c1><c2>test2</c2>....</row>
0000002 <row><c1>test</c1><c2>test2</c2>....</row>
上面记录将作为工作有罚款:从顶层提取值不为我在这种情况下,由于XML的结构
我们的基表的数据结构工作没有多个有价值的领域。当我挣扎是当存储在XMLRecord数据就像下面:
<row>
<c1>test1</c1>
<c1 m=1>test1_2</c1>
<c2>test2</c2>
<c2 m=1>test2_2</c2>
<c3>test3</c3>
<c3 m=1>test3_2</c3>
</row>
我想输出的格式如下:
RECID Col1 Col2 Col3
-----------------------------------
0000003 test1 test2 test3
0000003 test1_2 test2_2 test3_2
0000004 test1 test2 test3
0000004 test1_2 test2_2 test3_2
问题是,您的XML结构是borked。在同一个环境中名称完全相同的两个不同元素不可避免地会导致问题。 – APC