2017-03-09 4 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) 
관련 문제