SQL Server 2005 XML Query - PullRequest
       7

SQL Server 2005 XML Query

2 голосов
/ 08 марта 2010

Я новичок в запросе типа данных XML в SQL Server 2005. Кто-нибудь может помочь мне создать запрос для моего требования? Вот сценарий моей колонки.

Column Name: Cabinet

/*Row 1 XML Data*/
<shelf>
 <box>
   <item type="pencil" color="blue"/>
   <item type="pencil" color="red"/>
   <item type="paper" color="white"/>
   <item type="ribbon" color="red"/>
 </box>
<shelf>

/*Row 2 XML Data*/
<shelf>   
  <item type="pencil" color="yellow"/>
  <item type="can" color="blue"/>
  <item type="scissor" color="yellow"/>
<shelf>

Desired Output:
4
3

Я хочу посчитать количество узлов "item" независимо от его типа и цвета. Заранее спасибо.

1 Ответ

2 голосов
/ 08 марта 2010

Посмотрите на это ( Полный рабочий пример )

DECLARE @Table TABLE(
        Cabinet XML
)

INSERT INTO @Table SELECT
'<shelf> 
 <box> 
   <item type="pencil" color="blue"/> 
   <item type="pencil" color="red"/> 
   <item type="paper" color="white"/> 
   <item type="ribbon" color="red"/> 
 </box> 
</shelf>'

INSERT INTO @Table SELECT
'<shelf>    
  <item type="pencil" color="yellow"/> 
  <item type="can" color="blue"/> 
  <item type="scissor" color="yellow"/> 
</shelf>'

SELECT  *,
        Cabinet.query('count(//item)').value('.','int')
FROM    @Table
...