Kolumnnamn med sökvägen angiven som data()

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Om sökvägen som anges som kolumnnamn är data()behandlas värdet som ett atomiskt värde i den genererade XML-koden. Ett blankstegstecken läggs till i XML-koden om nästa objekt i serialiseringen också är ett atomiskt värde. Det här är användbart när du skapar listtypade element- och attributvärden. Följande fråga hämtar produktmodell-ID, namn och lista över produkter i den produktmodellen.

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');

Den kapslade SELECT hämtar en lista över produkt-ID:t. Den anger "data()" som kolumnnamn för produkt-ID:t. Eftersom PATH-läget anger en tom sträng för radelementets namn genereras inget radelement. I stället returneras värdena som tilldelade till ett ProductIDs-attribut för <ProductModelData> radelementet i det överordnade SELECT. Det här är resultatet:

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

Se även