2015-05-14 54 views
0

我想要计算我存储在我的表中的XML clob中两个相同父节点内的数字子节点。计数来自两个相同的父节点的xml子节点的出现

的XML的Clob有这样的格式:

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

我希望我的XMLQUERY去通过这个XML CLOB和确定有多少折扣也有在各产品,而忽略那些具有较少或为零<Discount>。 所以在上面的例子中它应该返回2.

谢谢。

+1

检查这个网站做......它会帮助你 https://community.oracle.com/thread/2433392 – Moudiz

回答

0

我刚刚意识到我的答案只适用于SQL-SERVER。我会让它在这里,以帮助其他人

这里是一个查询,将为您带来1记录每个产品有1个或多个折扣节点。这是通过使用XML查询功能“计数()

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 
相关问题