Bagikan melalui


Contoh: Kolom XMLType Kueri

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Kueri berikut menyertakan kolom jenis xml . Kueri mengambil ID model produk, nama, dan langkah-langkah manufaktur di lokasi pertama dari Instructions kolom jenis xml .

Contoh

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

Berikut ini adalah hasilnya. Tabel menyimpan instruksi manufaktur hanya untuk beberapa model produk. Langkah-langkah manufaktur dikembalikan sebagai subelemen <ProductModelData> elemen dalam hasilnya.

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

Jika kueri menentukan nama kolom untuk XML yang dikembalikan oleh XQuery, seperti yang ditentukan dalam pernyataan berikut SELECT , langkah-langkah manufaktur dibungkus dalam elemen yang memiliki nama yang ditentukan.

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

Ini adalah hasilnya:

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

Kueri berikut menentukan arahan ELEMENTS . Oleh karena itu, hasil yang dikembalikan bersifat elemen-sentris. Opsi XSINIL yang ditentukan dengan direktif ELEMENTS mengembalikan <ManuSteps> elemen, bahkan jika kolom yang sesuai dalam set baris adalah 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

Ini adalah hasilnya:

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

Lihat juga