带有指定为 data() 的路径的列名
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
如果被指定为列名的路径为 data()
,则在生成的 XML 中,该值将被作为一个原子值来处理。 如果序列化中的下一项也是一个原子值,则将向 XML 中添加一个空格字符。 这在创建列表类型化元素值和属性值时很有用。 以下查询将检索产品型号 ID、名称和该产品型号中的产品列表。
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 语句将检索产品 ID 列表。 它指定 data() 作为产品 ID 列名。 由于 PATH 模式为行元素名指定了空字符串,因此不会生成行元素。 相反,将返回值以分配给父级 SELECT 的 <ProductModelData>
行元素的 ProductIDs 属性。 结果如下:
<ProductModelData
ProductModelID = "7"
ProductModelName="HL Touring Frame"
ProductIDs="885 887 888 889 890 891 892 893"
/>