2012-06-08 2 views
1

제가XQuery를 사용하여 XML에서 행 목록으로 값 목록을 추출하는 방법은 무엇입니까?

DECLARE @x XML 
SELECT @x = '<PartnerEmails> 
<Email>[email protected]</Email> 
<Email>[email protected]</Email> 
</PartnerEmails>' 
SELECT @x.query('data(PartnerEmails/Email)').value('.','varchar(100)') AS Val 

실제 출력 아래 같은 XQuery를 가지고 두 틀어져

Val 
[email protected] [email protected] 

예상 출력

[email protected] 
[email protected] 

즉.

어떻게 그렇게합니까? 각 "행"그 테이블의 한 <Email>을 포함 - 당신이 <PartnerEmails> 내부에 여러 개의 노드를 가지고 있기 때문에, 당신은 XML 조각의 "인라인"테이블을 만들 수 .nodes() 기능을 사용할 필요가

SELECT 
    node.value('.','varchar(100)') AS Val 
FROM 
    @x.nodes('/PartnerEmails/Email') AS PE(Node)  

:이

답변

3

사용 노드에서 쿼리 할 수 ​​있습니다 (XML 노드의 내용 추출).

+1

+1 훨씬 깨끗한 것 –

1
DECLARE @x XML 
SELECT @x = '<PartnerEmails> 
<Email>[email protected]</Email> 
<Email>[email protected]</Email> 
</PartnerEmails>' 

SELECT ColumnValue.value('.','varchar(1000)') as Val    
FROM @x.nodes('/PartnerEmails/Email') as Table1(ColumnValue) 
관련 문제