2012-04-26 32 views
1

我有一個表(表1),其具有coloumn按名稱XMLColoumn的XML的一部分是像XML節點查詢來獲取所有valuenames

<StudentSubjects> 
    <ValueName>Maths</ValueName> 
    <ValueName>Science</ValueName> 
    <ValueName>History</ValueName> 
    <ValueName>Calculus</ValueName> 
</StudentSubjects> 

我的表(表1)像

StudentNo XMLColoumn(textfile) 
112   (above XML) 
1445   (same structure as above XML) 

我試圖讓輸出

StudentNo  Subjects 
112   Maths 
112   Science 
112   History 
112   Calculus 

我發現到現在是

SELECT 
    convert(XML,CAST(XMLCOLOUMN AS nvarchar(max)).value('(//StudentSubjects/ValueName/text())[1]','nvarchar(max)'),StudentNo from Table1 

它返回我只有第一排即maths..how我可以得到所有的<ValueName>? 請讓我知道我嘗試了很多卻找到了... couldnt.Please幫助!

回答

2

您需要使用nodes()將XML分解爲行。

select StudentNo, 
     N.value('.', 'nvarchar(max)') as Subjects 
from Table1 
    cross apply XMLColumn.nodes('/StudentSubjects/ValueName') as X(N) 

SE-Data