本篇仅介绍最简单的XML操作,FOR XML AUTO

F1帮助中是这么描述滴:

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

并且还有这么段重要提示:

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

以上内容了解下即可,以下内容了解下即可,Let’s Go

 

先看测试用数据

FROM T
   2:  
   3: 输出
   4: GRP_A                GRP_B                GRP_C                VAL
-- -------------------- -------------------- -----------
   6: a1                   b1                   c1                   10
   7: a1                   b1                   c2                   10
   8: a1                   b2                   c2                   40
   9: a1                   b2                   c3                   40
  10: a1                   b2                   c3                   50
NULL
NULL
NULL
  14:  
  15: (8 行受影响)

最简单嘛,加上三个关键字再看输出结果:

USE DORBEN
GO
   3:  
FROM T
FOR XML AUTO


输出介个:

[MSSQL]FOR XML AUTO I


结果集是个连接,点开瞧瞧:

/>
/>
/>
/>
/>
/>
/>
/>


新增了FOR XML AUTO关键字后,查询结果集变成了XML,且,原表每行数据现在变成了一行XML节点
其中列数据变成了XML中的属性,如果原列值为NULL,则XML中不予体现,如XML结果集中的第6,7,8行


接下来这个例子依然很简单,仅仅是指定一些别名,列别名和表别名,看代码吧

SELECT
AS GA,
AS GB,
AS GC,
VALUE
AS Record
FOR XML AUTO

输出结果

/>
/>
/>
/>
/>
/>
/>
/>

可以看到,影响的是行名和属性名


现在来添加ELEMENTS选项,看看结果会怎样,SQL及结果如下

SELECT
AS GA,
AS GB,
AS GC,
VALUE
AS Record
FOR XML AUTO,ELEMENTS

输出结果

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
哦耶,变化不小,属性没了,都变成ELEMENT


看到这必然要问的一个问题是,如何让某些字段显示为属性,某些字段显示为元素呢?!这个问题问得好!我们以后再说!呵呵
 

相关文章:

  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2021-06-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
猜你喜欢
  • 2021-07-17
  • 2022-02-26
  • 2022-12-23
  • 2021-05-29
  • 2021-12-07
  • 2022-12-23
相关资源
相似解决方案