带有指定为 data() 的路径的列名

如果指定为列名的路径为“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" />

另请参阅

将 PATH 模式与 FOR XML 配合使用