1

XMLの一部であるXMLColoumnという名前の列を持つテーブル(Table1)があります

<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 に答える