簡體   English   中英

查詢存儲在SQL Server列中的XML數據

[英]Querying XML data stored in SQL Server column

我的表是XMLDataXMLXMLField

列中的數據如下所示:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM