分享方式:


範例:查詢 XMLType 資料行

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

下列查詢包含 xml 類型的資料行。 此查詢會從 Instructions xml 類型之 資料行的第一個位置,擷取產品型號識別碼、名稱和製造步驟。

範例

USE AdventureWorks2022;
GO
SELECT ProductModelID, Name,
   Instructions.query('
declare namespace MI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
/MI:root/MI:Location[1]/MI:step')
FROM Production.ProductModel
FOR XML RAW ('ProductModelData')
GO

以下為結果。 此資料表只儲存某些產品型號的製造指示。 製造步驟會當做結果中 <ProductModelData> 元素的子元素傳回。

<ProductModelData ProductModelID="5" Name="HL Mountain Frame" />
<ProductModelData ProductModelID="6" Name="HL Road Frame" />
<ProductModelData ProductModelID="7" Name="HL Touring Frame">
    <MI:step> ... </MI:step>
    <MI:step> ... </MI:step>
</ProductModelData>

如果查詢對 XQuery 傳回的 XML 指定資料行名稱 (如下列 SELECT 陳述式所指定),則製造步驟會包在具有指定之名稱的元素中。

USE AdventureWorks2022;
GO
SELECT ProductModelID, Name,
   Instructions.query('
declare namespace MI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
/MI:root/MI:Location[1]/MI:step') as ManuSteps
FROM Production.ProductModel
FOR XML RAW ('ProductModelData');
GO

以下是結果:

<ProductModelData ProductModelID="5" Name="HL Mountain Frame" />
<ProductModelData ProductModelID="6" Name="HL Road Frame" />
<ProductModelData ProductModelID="7" Name="HL Touring Frame">
  <ManuSteps>
    <MI:step ... </MI:step>
    <MI:step ... </MI:step>
  </ManuSteps>
</ProductModelData>

下列查詢指定了 ELEMENTS 指示詞。 因此,傳回的結果會是元素中心的。 與 XSINIL 指示詞一起指定的 ELEMENTS 選項會傳回 <ManuSteps> 元素,即使資料列集內相對應的資料行是 NULL 也一樣。

USE AdventureWorks2022;
GO
SELECT ProductModelID, Name,
   Instructions.query('
declare namespace MI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"
   /MI:root/MI:Location[1]/MI:step
') as ManuSteps
FROM Production.ProductModel
FOR XML RAW ('ProductModelData'), root('MyRoot'), ELEMENTS XSINIL
GO

以下是結果:

<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   ...
  <ProductModelData>
    <ProductModelID>6</ProductModelID>
    <Name>HL Road Frame</Name>
    <ManuSteps xsi:nil="true" />
  </ProductModelData>
  <ProductModelData>
    <ProductModelID>7</ProductModelID>
    <Name>HL Touring Frame</Name>
    <ManuSteps>
      <MI:step ... </MI:step>
      <MI:step ...</MI:step>
       ...
    </ManuSteps>
  </ProductModelData>
</MyRoot>

另請參閱