[英]Querying XML data stored in SQL Server column
My table is XMLData
with an XML
column XMLField
. 我的表是
XMLData
与XML
列XMLField
。
The data in the column looks like this: 列中的数据如下所示:
<table>
<id>{9ebef1ed-51f6-4160-b342-40fd1bf311c5}</id>
<rows>
<row>
<columns>
<column name="Batch" value="Test Batch 123" type="System.String" />
<column name="PartNo" value="Sample123" type="System.String" />
<column name="Note" value="Slight Color Variants" type="System.String" />
<column name="ShipDate" value="05-August-2018" type="System.DateTime" />
<column name="Qty" value="2" type="System.Int32" />
<column name="DefaultKey" value="1" type="System.Int32" />
</columns>
</row>
<row>
<columns>
<column name="Batch" value="Second Batch" type="System.String" />
<column name="PartNo" value="SampleXyz" type="System.String" />
<column name="Note" value="Release Date TBD" type="System.String" />
<column name="ShipDate" value="01-September-2018" type="System.DateTime" />
<column name="Qty" value="1" type="System.Int32" />
<column name="DefaultKey" value="2" type="System.Int32" />
</columns>
</row>
</rows>
<key>DefaultKey</key>
<total>0</total>
<data />
<parameters />
</table>
I would like to query Batch, PartNo, Note, ShipDate, Qty, DefaultKey and retrieve the values. 我想查询Batch,PartNo,Note,ShipDate,Qty,DefaultKey并检索值。
Thank you 谢谢
Try something like this: 尝试这样的事情:
SELECT
Batch = XC.value('(column[@name="Batch"]/@value)[1]', 'varchar(50)'),
PartNo = XC.value('(column[@name="PartNo"]/@value)[1]', 'varchar(50)'),
Note = XC.value('(column[@name="Note"]/@value)[1]', 'varchar(50)'),
ShipDate = XC.value('(column[@name="ShipDate"]/@value)[1]', 'varchar(50)'),
Qty = XC.value('(column[@name="Qty"]/@value)[1]', 'int'),
DefaultKey = XC.value('(column[@name="DefaultKey"]/@value)[1]', 'int')
FROM
dbo.XmlData
CROSS APPLY
XmlField.nodes('/table/rows/row/columns') AS XT(XC)
It basically takes the XmlField
column's XML, and gets a "virtual" table of XML fragments according to the XPath in the .nodes()
expression. 它基本上采用
XmlField
列的XML,并根据.nodes()
表达式中的XPath获取XML片段的“虚拟”表。 From there, it reaches into those XML fragments returned, and pulls out the individual values you're interested in. 从那里,它到达返回的XML片段,并提取出您感兴趣的单个值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.