2015-05-14 5 views
0

Я пытаюсь подсчитать число дочерних узлов в двух идентичных родительских узлах в XML-блоке, который я сохранил в моей таблице.подсчет числа 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 
Смежные вопросы