在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用示例。

DECLARE @TempTable table(UserID int , UserName nvarchar(50));
insert into @TempTable (UserID,UserName) values (1,'a')
insert into @TempTable (UserID,UserName) values (2,'b')select UserID,UserName from @TempTable FOR XML PATH
运行这段脚本,将生成如下结果:

<row><UserID>1</UserID><UserName>a</UserName>
</row>
<row><UserID>2</UserID><UserName>b</UserName>
</row>
大家可以看到两行数据生成了两个节点,修改一下PATH的参数:
select UserID,UserName from @TempTable FOR XML PATH('lzy')

再次运行上述脚本,将生成如下的结果:

<lzy><UserID>1</UserID><UserName>a</UserName>
</lzy>
<lzy><UserID>2</UserID><UserName>b</UserName>
</lzy>
可以看到节点变成,其实PATH() 括号内的参数是控制节点名称的,这样的话大家可以看一下如果是空字符串(不是没有参数)会是什么结果?
select UserID,UserName from @TempTable FOR XML PATH('')

执行上面这段脚本将生成结果:

<UserID>1</UserID>
<UserName>a</UserName>
<UserID>2</UserID>
<UserName>b</UserName>

这样就不显示上级节点了,大家知道在 PATH 模式中,列名或列别名被作为 XPath 表达式来处理,也就是说,是列的名字,这样大胆试验一下不给指定列名和别名会是怎么样?

select CAST(UserID AS varchar) + '',UserName + '' from @TempTable FOR XML PATH('')

运行上面这句将生成结果

1a2b

所有数据都生成一行,而且还没有连接字符,这样的数据可能对大家没有用处,还可以再变化一下:

select CAST(UserID AS varchar) + ',',UserName + '',';' from @TempTable FOR XML PATH('')

生成结果

1,a;2,b;

大家现在明白了吧,可以通过控制参数来生成自己想要的结果,例如:

select '{' + CAST(UserID AS varchar) + ',','"' +UserName + '"','}' from @TempTable FOR XML PATH('')

生成结果

{1,"a"}{2,"b"}

还可以生成其他格式,大家可以根据自己需要的格式进行组合。

下面是一个数据统计的应用,希望大家可以通过下面的实例想到更多的应用

DECLARE @T1 table(UserID int , UserName nvarchar(50),CityName nvarchar(50));
insert into @T1 (UserID,UserName,CityName) values (1,'a','上海')
insert into @T1 (UserID,UserName,CityName) values (2,'b','北京')
insert into @T1 (UserID,UserName,CityName) values (3,'c','上海')
insert into @T1 (UserID,UserName,CityName) values (4,'d','北京')
insert into @T1 (UserID,UserName,CityName) values (5,'e','上海')SELECT B.CityName,LEFT(UserList,LEN(UserList)-1) FROM (
SELECT CityName,(SELECT UserName+',' FROM @T1 WHERE CityName=A.CityName  FOR XML PATH('')) AS UserList
FROM @T1 A
GROUP BY CityName
) B

生成结果(每个城市的用户名)

北京 b,d
上海 a,c,e

转载于:https://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html

SQL Server FOR XML PATH 语句的应用相关推荐

  1. SQL Server FOR XML PATH 语句的应用---列转行

    经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法. 在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应 ...

  2. 灵活运用 SQL SERVER FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  3. 灵活运用 SQL SERVER FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  4. 【转】灵活运用 SQL SERVER FOR XML PATH

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  5. SQL SERVER FOR XML PATH 用法

    有时候我们需要把多行数据,合并成一行显示,并用逗号或者其他方式分隔显示,这时候我们可以使用FOR XML PATH的方式,来实现需求.测试数据如下: --测试数据 if not object_id(N ...

  6. SQL Server 输出 XML

    一.概述 SELECT 查询将结果作为行集返回.在 SQL 查询中指定 FOR XML 子句,从而将该查询的正式结果作为 XML 来检索.FOR XML 子句可以用在顶级查询和子查询中.顶级 FOR ...

  7. SQL Server对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  8. sql server学习笔记——批处理语句、存储过程

    目录 批处理语句 1.批处理语句简介 示例一: 示例二: 存储过程 一.什么是存储过程 1.存储过程的简介 2.存储过程包含的内容 3.存储过程的优点 4.存储过程的分类 系统存储过程: 用户定义存储 ...

  9. Sql server注入分类之语句总结

    本章目录: 基础语句 注入点权限判断 获取数据库 获取指定数据库中的表的列的数据库 判断数据库级别的角色 SQL特性: 关于mssql的注入语句,跟mysql也差不了多少,都是从information ...

最新文章

  1. Github配置(git+vscode+python+jupyter)
  2. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
  3. AI企业下一个使命:让生物特征数据使用走向阳光透明
  4. html网页特殊符号代码
  5. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法
  6. eureka的自我保护
  7. 1.9 matlab字符与字符串
  8. 基于TensorFlow的2个机器学习简单应用实例
  9. 2.13生成可控的随机数据集合 模拟色子
  10. 开源创新、软件定义网络和网络功能虚拟化特性
  11. (原) ora-12705 cannot access nls data files or invalid environment specified
  12. AND、OR运算符的组合使用
  13. qq互动视频页面加载失败_互动案例技术分析(2)
  14. 计算机网络之传输层:4、TCP连接管理
  15. 【安全】安装phpLDAPadmin管理LDAP
  16. 用 Zabbix 监控值统计每个月触发器告警次数
  17. template string
  18. 利用LVM管理磁盘系统
  19. Oracle 11g数据库基础教程(第2版)-课后习题-第六章
  20. 首席省钱赚钱专家微信小程序源码下载,淘宝客 外卖侠 外卖cps 首席多多客 八合一小程序源码

热门文章

  1. 【正一专栏】欧洲五大联赛猜想(一)德法意班霸集结寻求欧冠突破
  2. j2me程序发布到手机
  3. 人类无法抗拒的10种心理(转)
  4. 线程基础知识——Windows核心编程学习手札系列之六
  5. Android中Intent和Intent过滤器详解
  6. python中迭代器的实现原理_Python 进阶应用教程
  7. 软件设计原则——里氏代换原则
  8. 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)
  9. 缓存一致性(MESI)
  10. BAT 批处理命令 - 解决cmd控制台中文乱码问题实例演示