Tsql 用于获取所有ValueName的XML节点查询
我有一个表(Table1),它有一个名为XMLColoumn的冒号,xml的一部分如下Tsql 用于获取所有ValueName的XML节点查询,tsql,Tsql,我有一个表(Table1),它有一个名为XMLColoumn的冒号,xml的一部分如下 <StudentSubjects> <ValueName>Maths</ValueName> <ValueName>Science</ValueName> <ValueName>History</ValueName> <ValueName>Calculus</ValueName>
<StudentSubjects>
<ValueName>Maths</ValueName>
<ValueName>Science</ValueName>
<ValueName>History</ValueName>
<ValueName>Calculus</ValueName>
</StudentSubjects>
我正试图获得输出作为
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
它只返回第一行即数学..如何获取所有的?
请让我知道我试了很多找…但是找不到。请帮忙 您需要使用将XML分解为行
select StudentNo,
N.value('.', 'nvarchar(max)') as Subjects
from Table1
cross apply XMLColumn.nodes('/StudentSubjects/ValueName') as X(N)
select StudentNo,
N.value('.', 'nvarchar(max)') as Subjects
from Table1
cross apply XMLColumn.nodes('/StudentSubjects/ValueName') as X(N)