具有指定为数据的路径的列名 ()

适用于:yesSQL Server(所有支持的版本)YesAzure SQL 数据库YesAzure SQL 托管实例

如果指定为列名 data()的路径,该值将被视为生成的 XML 中的原子值。 如果序列化中的下一项也是一个原子值,则将向 XML 中添加一个空格字符。 创建列表类型化元素和属性值时,这非常有用。 以下查询将检索产品型号 ID、名称和该产品型号中的产品列表。

USE AdventureWorks2012;
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"
/>

请参阅