Nama kolom dengan jalur yang ditentukan sebagai data()

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Jika jalur yang ditentukan sebagai nama kolom adalah data(), nilai diperlakukan sebagai nilai atom dalam XML yang dihasilkan. Karakter spasi ditambahkan ke XML jika item berikutnya dalam serialisasi juga merupakan nilai atomik. Ini berguna saat Anda membuat elemen dan nilai atribut yang ditik daftar. Kueri berikut mengambil ID model produk, nama, dan daftar produk dalam model produk tersebut.

USE AdventureWorks2022;
GO
SELECT ProductModelID       AS "@ProductModelID",
       Name                 AS "@ProductModelName",
      (SELECT ProductID AS "data()"
       FROM   Production.Product
       WHERE  Production.Product.ProductModelID =
              Production.ProductModel.ProductModelID
      FOR XML PATH (''))    AS "@ProductIDs"
FROM  Production.ProductModel
WHERE ProductModelID = 7
FOR XML PATH('ProductModelData');

SELECT berlapis mengambil daftar ID produk. Ini menentukan "data()" sebagai nama kolom untuk ID produk. Karena mode PATH menentukan string kosong untuk nama elemen baris, tidak ada elemen baris yang dihasilkan. Sebagai gantinya, nilai dikembalikan sebagaimana ditetapkan ke atribut ProductID dari <ProductModelData> elemen baris select induk. Ini adalah hasilnya:

<ProductModelData
  ProductModelID = "7"
  ProductModelName="HL Touring Frame"
  ProductIDs="885 887 888 889 890 891 892 893"
/>

Baca juga