计算来自两个相同父节点的xml子节点的出现次数

时间:2015-05-14 12:40:06

标签: sql xml oracle plsql

我试图计算我已存储在我的表格中的XML clob中两个相同父节点内的子节点数。

XML Clob的格式如下:

<ProductS>
<id>1</id>
<Discount></Discount>
<Discount></Discount>
</ProductS>
<ProductS>
<id>2</id>
<Discount></Discount>
</ProductS>

我希望我的xmlquery能够浏览这个XML clob,并确定每个ProductS中有多少Discounts,而IGNORE中有少量或零<Discount>的那些。 所以在上面的例子中它应该返回2.

感谢。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到我的答案仅适用于SQL-SERVER。如果这有助于其他人,我会把它放在这里

以下是一个查询,它将为您提供每个产品的1条或多条折扣节点的1条记录。这是通过使用xml查询功能&#34; count()&#34;

完成的
declare @xml xml
set @xml = '<ProductS>
<id>1</id>
<Discount></Discount>
<Discount></Discount>
</ProductS>
<ProductS>
<id>2</id>
<Discount></Discount>
</ProductS>'


select 
    n.xmlNode.query('.') ProductNode    
from @xml.nodes('/ProductS') n(xmlNode)
where 
    n.xmlNode.query('count(Discount)').value('.','int') > 0