[英]Querying XML data stored in SQL Server column
我的表是XMLData
與XML
列XMLField
。
列中的數據如下所示:
<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>
我想查詢Batch,PartNo,Note,ShipDate,Qty,DefaultKey並檢索值。
謝謝
嘗試這樣的事情:
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)
它基本上采用XmlField
列的XML,並根據.nodes()
表達式中的XPath獲取XML片段的“虛擬”表。 從那里,它到達返回的XML片段,並提取出您感興趣的單個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.