我们的基表数据结构:
RECID XMLRECORD-----------------------------------0000001 <row><c1>test</c1><c2>test2</c2>....</row>0000002 <row><c1>test</c1><c2>test2</c2>....</row>
由于没有多个valuse字段,上述记录可以正常工作.我正在努力的地方是存储在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 test30000003 test1_2 test2_2 test3_20000004 test1 test2 test30000004 test1_2 test2_2 test3_2解决方法 谢谢你的意见,但我已经设法通过构建一个适用于此实例的连接来获得我需要的解决方案.关于它的好处是,无论供应商向我们投放多少记录,它都会起作用.在某些情况下,“m”属性最多可达9或10.
我使用了通常的内连接(1 = 1)并基于动态ID构建了后续连接.
第一行的ID_NUM的结果是“c”,下一行是“c2”,依此类推.
SELECT t.recID,t2.VALUE1,t3.VALUE2,t4.VALUE3 FROM tINNER JOIN XMLtable('/row/c1' PASSING t.xmlrecord ID_NUM VARCHAR(4) path 'concat(substring(ancestor-or-self::*/name(.),1,1),@m)',VALUE1 VARCHAR(20) path '.') t2ON (1=1)INNER JOIN XMLtable('/row/c2' PASSING t.xmlrecord ID_NUM VARCHAR(4) path 'concat(substring(ancestor-or-self::*/name(.),VALUE2 VARCHAR(20) path '.') t3ON (t2.ID_NUM=t3.ID_NUM)INNER JOIN XMLtable('/row/c3' PASSING t.xmlrecord ID_NUM VARCHAR(4) path 'concat(substring(ancestor-or-self::*/name(.),VALUE3 VARCHAR(20) path '.') t4ON (t2.ID_NUM=t4.ID_NUM)总结
以上是内存溢出为你收集整理的来自多个元素的Oracle SQL extractvalue全部内容,希望文章能够帮你解决来自多个元素的Oracle SQL extractvalue所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)