Sql 需要从XML列编写oracle查询的帮助吗
我在oracle table XML列中有以下XML:Sql 需要从XML列编写oracle查询的帮助吗,sql,xml,oracle,Sql,Xml,Oracle,我在oracle table XML列中有以下XML: <?xml version="1.0" encoding="UTF-8"?> <Employee> <Emp_information emp_name="SSS"> </Emp_information> <emp_content> <emp_part part_id="A" > <emp_scoring_information e
<?xml version="1.0" encoding="UTF-8"?>
<Employee>
<Emp_information emp_name="SSS">
</Emp_information>
<emp_content>
<emp_part part_id="A" >
<emp_scoring_information equivalent_value="Test" >
<empset empset_weight="1">
<emp_key value="1"/>
</empset>
</emp_scoring_information>
</emp_part>
<emp_part part_id="B" >
<emp_scoring_information equivalent_value_flag="Test1" >
<empset empset_weight="1" >
<emp_key value="1"/>
<emp_key value="2"/>
</empset>
</emp_scoring_information>
</emp_part>
</emp_content>
</Employee>
如何解决使用SQL查询打印以下格式数据的问题
我想详细解释输出值A=1,B=1,2 A=1 A是来自emp_part_id的值=是静态值,1是来自empset emp_key value的值,就像它需要为下一个emp_part做同样的事情一样,而且part_id B有多个emp_key value的empset,在这种情况下,它需要显示B=1,2。每个零件之间用逗号A=1、B=1,2分隔
with src as (select xmltype('<Employee>
<Emp_information emp_name="SSS">
</Emp_information>
<emp_content>
<emp_part part_id="A" >
<emp_scoring_information equivalent_value="Test" >
<empset empset_weight="1">
<emp_key value="1"/>
</empset>
</emp_scoring_information>
</emp_part>
<emp_part part_id="B" >
<emp_scoring_information equivalent_value_flag="Test1" >
<empset empset_weight="1" >
<emp_key value="1"/>
<emp_key value="2"/>
</empset>
</emp_scoring_information>
</emp_part>
</emp_content>
</Employee>') xml from dual)
select xmlquery('string-join($d/Employee/emp_content/emp_part/concat(@part_id,"=",string-join(emp_scoring_information/empset/emp_key/@value,",") ),",")' passing xml as "d" returning content) from src
字符串连接-使用分隔符连接字符串序列
concat-连接字符串str1+str2+等
它的工作原理类似于两个循环,第一个循环是选择@part_id,第二个循环是选择并聚合依赖的@value你测试过这个查询吗?。当我运行这个查询时,它返回的是null,这里的例子是。如果为空,请尝试使用xmlcast xmlqueryas VARCHAR2100T包装xmlquery。非常感谢。。我试图在同一列中显示以下数据:一次我需要用零件B显示不等于值,另一次我需要用零件A显示不等于值,必须显示以下输出。A=3,B=1 | | A=3,B不等于1 | | A不等于3,B=1在查询中可行吗?是的,必须添加谓词。
with src as (select xmltype('<Employee>
<Emp_information emp_name="SSS">
</Emp_information>
<emp_content>
<emp_part part_id="A" >
<emp_scoring_information equivalent_value="Test" >
<empset empset_weight="1">
<emp_key value="1"/>
</empset>
</emp_scoring_information>
</emp_part>
<emp_part part_id="B" >
<emp_scoring_information equivalent_value_flag="Test1" >
<empset empset_weight="1" >
<emp_key value="1"/>
<emp_key value="2"/>
</empset>
</emp_scoring_information>
</emp_part>
</emp_content>
</Employee>') xml from dual)
select xmlquery('string-join($d/Employee/emp_content/emp_part/concat(@part_id,"=",string-join(emp_scoring_information/empset/emp_key/@value,",") ),",")' passing xml as "d" returning content) from src