2014-04-16 1 views
2

XML 파일을 mssql 데이터베이스 (SQL Server 2008 R2)로 파쇄하려고합니다. 특정 요소 값의 속성 값을 찾으려고합니다.TSQL 및 XQuery를 사용하여 XML 구문 분석 - 주어진 요소 값에 대한 특성 값 가져 오기

파일의 발췌 :

<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company> 

그래서 내가 이름 요소가 "회사 Z를"동일 이름 요소의 비율 속성의 값을 찾고 있어요. 이 경우 "4.92"값을 반환해야합니다.

은 지금까지 나는 다음과 같은 코드로 왔어요 :

declare @xml xml 

set @xml = N' 
<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company>' 

select 
    @xml.value('(/company/names[name = "Company Z"]/@percent)[1]', 'decimal(8,5)') as Percentage 

이는 null를 돌려줍니다. 몇 가지 경로를 시도했지만 그 중 어느 것도 내가 원하는 경로를 반환하지 않습니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

도움을 주시면 감사하겠습니다.

답변

0
declare @xml xml 

set @xml = N' 
<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company>' 

select 
    @xml.value('(/company/names/name[. = "Company Z"]/@percent)[1]', 'decimal(8,5)') as Percentage 
0

는 XPath는 같은

data(/company/names/name[.='Company Z']/@percent) 

을 시도

관련 문제