作为结果集查询xml列的一部分
如何获取xml列的一部分,并在SQL中将其作为自己的结果集返回 我的数据库中有一个xml文件,如下所示:作为结果集查询xml列的一部分,xml,sql-server-2008,Xml,Sql Server 2008,如何获取xml列的一部分,并在SQL中将其作为自己的结果集返回 我的数据库中有一个xml文件,如下所示: <main> <data> <rows> <_items> <columns> <values> <keyvaluepairs> <keyvaluepairofstringstring>
<main>
<data>
<rows>
<_items>
<columns>
<values>
<keyvaluepairs>
<keyvaluepairofstringstring>
<key>EVENT</key>
<value>Wedding</value>
</keyvaluepairofstringstring>
<keyvaluepairofstringstring>
<key>DETAIL</key>
<value>Smith-Wesson</value>
</keyvaluepairofstringstring>
</keyvaluepairs>
</values>
</columns>
<columns>
<values>
<keyvaluepairs>
<keyvaluepairofstringstring>
<key>EVENT</key>
<value>Reunion</value>
</keyvaluepairofstringstring>
<keyvaluepairofstringstring>
<key>DETAIL</key>
<value>Class of 1996</value>
</keyvaluepairofstringstring>
</keyvaluepairs>
</values>
</columns>
<columns>
<values>
<keyvaluepairs>
<keyvaluepairofstringstring>
<key>EVENT</key>
<value>Pie-throwing contest</value>
</keyvaluepairofstringstring>
<keyvaluepairofstringstring>
<key>DETAIL</key>
<value>Cherry pies</value>
</keyvaluepairofstringstring>
</keyvaluepairs>
</values>
</columns>
</_items>
</rows>
</data>
</main>
EVENT NAME
Wedding Smith-Wesson
Reunion Class of 1996
Pie-throwing contest Cherry pies
...etc...
我正在使用该方法查询单个值,但这还不足以获取我真正需要的所有数据
我正在使用SQLServer2008
编辑:为了澄清,此xml包含在一行中。例如,要返回上面的xml,我需要键入
select my_xml_column from my_table;
试试这个:
select X.N.value('(keyvaluepairofstringstring/value[../key = "EVENT"])[1]', 'varchar(100)') as EVENT,
X.N.value('(keyvaluepairofstringstring/value[../key = "DETAIL"])[1]', 'varchar(100)') as NAME
from YourTable as T
cross apply T.XMLCol.nodes('/main/data/rows/_items/columns/values/keyvaluepairs') as X(N)
在此处测试:
顺便说一句,我必须修复你的XML。这里有一些缺少的结束标记。您是查询单个XML字符串,还是查询一组行?而且您的XML看起来也不对:SQL server不接受此XML数据类型。XML错误已修复。我改变了周围的标签和数据,使其匿名化了一点,并搞错了一个结束标签。这包含在sql server中XML类型的列中,包含在一行中。谢谢(我修复了xml结束标记)