1

我有一个表(Table1),它有一个名为 XMLColoumn 的列,xml 的一部分就像

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

我的表是 (Table1) 之类的

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

它只返回第一行,即数学......我怎样才能得到所有的<ValueName>? 请让我知道我尝试了很多寻找......但不能。请帮忙!

4

1 回答 1

2

您需要使用nodes()将 XML 分解为行。

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

SE-数据

于 2012-04-26T06:34:44.983 回答