FOR XML 子句的基本语法

FOR XML 模式可以是 RAW、AUTO、EXPLICIT 或 PATH。 它确定产生的 XML 的形状。

重要说明重要提示

不推荐使用 FOR XML 选项的 XMLDATA 指令。 如果是 RAW 和 AUTO 模式,请使用 XSD 生成。 在 EXPLICT 模式下,没有可以代替 XMLDATA 指令的项。 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

下面是 FOR 子句 (Transact-SQL) 中所述的基本语法:

[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML 
    { 
      { RAW [ ('ElementName') ] | AUTO } 
        [ 
           <CommonDirectives> 
           [ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ] 
           [ , ELEMENTS [ XSINIL | ABSENT ] 
        ]
      | EXPLICIT 
        [ 
           <CommonDirectives> 
           [ , XMLDATA ] 
        ]
      | PATH [ ('ElementName') ] 
        [ 
           <CommonDirectives> 
           [ , ELEMENTS [ XSINIL | ABSENT ] ]
        ]
     } 
 
 <CommonDirectives> ::= 
   [ , BINARY BASE64 ]
   [ , TYPE ]
   [ , ROOT [ ('RootName') ] ]

参数

  • RAW[('ElementName')]
    采用查询结果并将结果集中的每一行转换为将通用标识符 <row /> 作为元素标记的 XML 元素。 使用此指令时,可以选择指定行元素的名称。 产生的 XML 将把指定的 ElementName 用作为每行生成的行元素。 有关详细信息,请参阅将 RAW 模式与 FOR XML 一起使用

  • AUTO
    以简单的嵌套 XML 树返回查询结果。 FROM 子句中的每个表(在 SELECT 子句中至少为其列出了一列)都表示为一个 XML 元素。 SELECT 子句中列出的列映射到适当的元素属性。 有关详细信息,请参阅将 AUTO 模式与 FOR XML 一起使用

  • EXPLICIT
    指定显式定义产生的 XML 树的形状。 使用此模式时,必须以一种特定的方式编写查询,以便显式指定所需嵌套的其他信息。 有关详细信息,请参阅将 EXPLICIT 模式与 FOR XML 一起使用

  • PATH
    提供一种更简单的方式来混合元素和属性,并引入表示复杂属性的其他嵌套。 可以使用 FOR XML EXPLICIT 模式查询从行集中构造这种 XML,但 PATH 模式针对可能很烦琐的 EXPLICIT 模式查询提供了一种更简单的替代方式。 通过 PATH 模式,以及用于编写嵌套 FOR XML 查询的功能和返回 xml 类型实例的 TYPE 指令,您可以编写简单的查询。 它为编写大多数 EXPLICIT 模式查询提供了一个替代方式。 默认情况下,PATH 模式为结果集中的每一行生成一个 <row> 元素包装。 您还可以选择指定元素名称。 如果这样,则指定的名称用作包装元素名称。 如果提供空字符串 (FOR XML PATH ('')),则不会生成任何包装元素。 有关详细信息,请参阅将 PATH 模式与 FOR XML 一起使用

  • XMLDATA
    指定应返回内联 XML 数据简化 (XDR) 架构。 文档的架构被预置为内联架构。 有关使用示例,请参阅将 RAW 模式与 FOR XML 一起使用

  • XMLSCHEMA
    返回内联 W3C XML 架构 (XSD)。 指定此指令时,可以选择指定目标命名空间 URI。 这样将返回架构中指定的命名空间。 有关详细信息,请参阅生成内联 XSD 架构。 有关使用示例,请参阅将 RAW 模式与 FOR XML 一起使用

  • ELEMENTS
    如果指定 ELEMENTS 选项,则列作为子元素返回。 否则,列将映射到 XML 属性。 只在 RAW、AUTO 和 PATH 模式中支持此选项。 使用此指令时,可以选择指定 XSINIL 或 ABSENT。 XSINIL 指定为 NULL 列值创建 xsi:nil 属性设置为 True 的元素。 默认情况下,或者与 ELEMENTS 一起指定了 ABSENT 时,不会为 NULL 值创建任何元素。 有关使用示例,请参阅将 RAW 模式与 FOR XML 一起使用将 AUTO 模式与 FOR XML 一起使用

  • BINARY BASE64
    如果指定 BINARY Base64 选项,则查询所返回的任何二进制数据都用 base64 编码格式表示。 若要使用 RAW 和 EXPLICIT 模式检索二进制数据,必须指定此选项。 在 AUTO 模式中,默认情况下将二进制数据作为引用返回。 有关使用示例,请参阅将 RAW 模式与 FOR XML 一起使用

  • TYPE
    指定查询以 xml 类型返回结果。 有关详细信息,请参阅 FOR XML 查询中的 TYPE 指令

  • ROOT [('RootName')]
    指定向产生的 XML 中添加单个顶级元素。 可以选择指定要生成的根元素名称。 默认值为“root”。

请参阅

参考

将 RAW 模式与 FOR XML 一起使用

将 AUTO 模式与 FOR XML 一起使用

将 EXPLICIT 模式与 FOR XML 一起使用

SELECT (Transact-SQL)

FOR XML (SQL Server)

概念

将 PATH 模式与 FOR XML 一起使用