FOR XML PATH
2016-02-25 10:54
155 查看
转自http://www.cnblogs.com/4mylife/archive/2012/09/06/2672755.html
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻。现在我要介绍的FOR XML PATH的“另类”用法。
首先,我们先来看看它的正常用法。下图是我们用到的一张TEST_PERSON表:
用FOR XML PATH方法查询,SQL语句如下:
显示结果如下:
展开结果可以看到如下图:
神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需求需要改变这个行节点为<animal>,怎么改?看下面的SQL语句你就会知道了。
展开结果如下图:
简单吧!!!有野心的同学就会说了:既然行节点可以改变,那列节点要改变又该怎么操作呢?很简单,只要给字段加别名。SQL语句如下:
展开结果如下:
好玩吧!!!古怪的同学就想了:既然行和列都可以自定义,那么是否说我们可以定义我们喜欢的输出方式呢?!(我们要说的重点就是这)
看如下SQL语句:
展示结果如下:
说了这么多,好像只是为了好玩。那么有哪些实际的应用场景中可以用到这个技术呢?
例如:要查询一个订单信息,这些信息包括(订单号+费用名称+...),而费用我们是存在单独的一个子表中,且一个订单不只一笔费用。
接下来我们增加个动物的行为表TEST_HOBBY表,用演示以上效果。TEST_HOBBY表如下:
我们查动物信息(动物名字+动物行为),动物行为存在TEST_HOBBY表中,我们通过ID 关联,并且一个动物存在多种行为。SQL语句如下:
结果展示如下:
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻。现在我要介绍的FOR XML PATH的“另类”用法。
首先,我们先来看看它的正常用法。下图是我们用到的一张TEST_PERSON表:
用FOR XML PATH方法查询,SQL语句如下:
SELECT * FROM TEST_PERSON FOR XML PATH
显示结果如下:
展开结果可以看到如下图:
神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需求需要改变这个行节点为<animal>,怎么改?看下面的SQL语句你就会知道了。
SELECT * FROM TEST_PERSON FOR XML PATH('animal')
展开结果如下图:
简单吧!!!有野心的同学就会说了:既然行节点可以改变,那列节点要改变又该怎么操作呢?很简单,只要给字段加别名。SQL语句如下:
SELECT ID AS XuHao,NAME AS MyName FROM TEST_PERSON FOR XML PATH('animal')
展开结果如下:
好玩吧!!!古怪的同学就想了:既然行和列都可以自定义,那么是否说我们可以定义我们喜欢的输出方式呢?!(我们要说的重点就是这)
看如下SQL语句:
SELECT '['+NAME+']' +' 'FROM TEST_PERSON FOR XML PATH('')
展示结果如下:
说了这么多,好像只是为了好玩。那么有哪些实际的应用场景中可以用到这个技术呢?
例如:要查询一个订单信息,这些信息包括(订单号+费用名称+...),而费用我们是存在单独的一个子表中,且一个订单不只一笔费用。
接下来我们增加个动物的行为表TEST_HOBBY表,用演示以上效果。TEST_HOBBY表如下:
我们查动物信息(动物名字+动物行为),动物行为存在TEST_HOBBY表中,我们通过ID 关联,并且一个动物存在多种行为。SQL语句如下:
SELECT PE.NAME,--取出TEST_PERSON表中的NAME字段 --通过ID关联到TEST_HOBBY表,并把这表中各种动物的行为拼接为一个字段返回 (SELECT ' '+HO.HOBBY_NAME+' ' FROM TEST_HOBBY HO WHERE HO.PARENT_ID=PE.ID FOR XML PATH('')) AS HOBBY FROM TEST_PERSON PE
结果展示如下:
相关文章推荐
- 智慧社区----互联网时代的未来家园(读书笔记)
- Linux下Git用法总结
- iOS UIImage 图像旋转
- FOR XML PATH
- 网络基本功(八):细说TCP滑动窗口
- JSON笔记
- MongoDB权威指南-增删查改
- Java成语接龙游戏小项目实战
- Ming Rpc
- Windows 编译器选项 Runtime Library
- 一个Java对象到底占多大内存
- mysqlbinlog工具基于日志恢复详细解释
- 利用阿里云搭建NFS服务器
- 翻翻git之---闪烁动画的TextView RevealTextView
- spring系列之4--浅谈前后端分离
- 【盘点十大奇葩辞职信】我的胸太大这里装不下
- Win 10找不到打印机,并报“Active Directory域服务当前不可用”的解决方法
- MongoDB权威指南
- 翻翻git之---闪烁动画的TextView RevealTextView
- leetcode 34 Search for a Range(二分法)