Delen via


Kolomnamen met het pad dat is opgegeven als data()

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Als het pad opgegeven als kolomnaam data() is, wordt de waarde beschouwd als een atomaire waarde in de gegenereerde XML. Er wordt een spatieteken toegevoegd aan de XML als het volgende item in de serialisatie ook een atomische waarde is. Dit is handig wanneer u lijst-getypeerde element- en attribuutwaarden maakt. Met de volgende query wordt de productmodel-id, de naam en de lijst met producten in dat productmodel opgehaald.

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

De geneste SELECT haalt een lijst met product-id's op. Hiermee geeft u 'data()' op als kolomnaam voor product-id's. Omdat de PATH-modus een lege tekenreeks voor de naam van het rijelement opgeeft, wordt er geen rijelement gegenereerd. In plaats daarvan worden de waarden geretourneerd als toegewezen aan een kenmerk ProductID's van het <ProductModelData> rijelement van de bovenliggende SELECT. Dit is het resultaat:

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

Zie ook