2017-03-09 14 views
1

私は以下のXMLを列に入れています。 \ Report \ Criterias \ Criteria(name = "Advertisers")\ Elements \ Element(name = "ListViewAvailable")に移動する必要があります。ここから、Value要素にあるすべての数値をリストする必要があります。XML列から要素値を取得する方法は?

は、これまでのところ私が得た:

SELECT xmlColumn.query('/Report/Criterias/Criteria/Elements/Element') 
from tbl 

が、どのようにフィルタリングするには全く分かりません。

<Report> 
    <Criterias> 
    <Criteria name="Date Range"> 
     ... 
    </Criteria> 

    <Criteria name="Advertisers"> 
     <Elements> 
     <Element name="CheckBoxOne"> 
      <Value>0</Value> 
     </Element> 
     <Element name="ListViewAvailable"> 
      <Value>314</Value> 
      <Value>57</Value> 
      <Value>18886</Value> 
      <Value>7437</Value> 
     </Element> 
     </Elements> 
    </Criteria> 
    <Criteria name="Revenue Types"> 
     ... 
    </Criteria> 
    </Criterias> 
</Report>  

答えて

2

あなたはValue要素にXMLを細断するCROSS APPLYと組み合わせた述語([])を使用してフィルタリングすることができ、レベル:

SELECT C.value('.', 'int') AS Value 
FROM tbl t 
CROSS APPLY t.xmlColumn.nodes(' 
    /Report/Criterias/Criteria[@name="Advertisers"] 
    /Elements/Element[@name="ListViewAvailable"] 
    /Value 
') T(C) 
関連する問題