• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > sqlserver FOR XML PATH 语句的应用

sqlserver FOR XML PATH 语句的应用

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了sqlserver,XML,PATH,等相关知识,希望本文的分享对您有所帮助

大家都知道在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
运行这段脚本,将生成如下结果:
代码如下:

1
a


2
b


大家可以看到两行数据生成了两个节点,修改一下PATH的参数:

select UserID,UserName from @TempTable FOR XML PATH('lzy')
再次运行上述脚本,将生成如下的结果:
代码如下:

1
a


2
b


可以看到节点变成,其实PATH() 括号内的参数是控制节点名称的,这样的话大家可以看一下如果是空字符串(不是没有参数)会是什么结果?

select UserID,UserName from @TempTable FOR XML PATH('')
执行上面这段脚本将生成结果:
代码如下:
1
a
2
b

这样就不显示上级节点了,大家知道在 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,d
上海 a,c,e
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何获取SqlServer2005表结构(字段,主键,外键,递增,描述)
  • 如何在SQL Server中实现 Limit m,n 的功能
  • 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
  • 小编带你深入解析SQL Server索引的原理
  • sqlserver帐号被禁用如何处理
  • sqlserver查询锁住sql以及解锁的方法
  • MS SQLServer 批量附加数据库的方法
  • SqlServer 2008 创建测试数据的方法
  • 讲解有关sqlserver分页查询处理方法
  • MYSQL同步Sqlserver数据库数据

相关文章

  • 2017-05-11MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
  • 2018-12-05SQL Server 聚集索引和非聚集索引的区别分析
  • 2018-12-05sql 版本详解 让你认识跟sql2000的区别
  • 2017-05-11Mysql中校对集utf8_unicode_ci与utf8_general_ci的区别说明
  • 2018-12-05详解mysql函数拼接查询concat函数的使用方法
  • 2017-05-11mysql误删root用户或者忘记root密码解决方法
  • 2017-05-11php利用GD库生成缩略图示例
  • 2017-05-115个常用的MySQL数据库管理工具详细介绍
  • 2017-05-11MySQL SELECT同时UPDATE同一张表问题发生及解决
  • 2018-12-05MySQL 5.6 GTID新特性实践_MySQL

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql记录根据日期字段倒序输出_MySQL
    • ubuntu下磁盘空间满了导致mysql启动不了怎么办
    • MySQL中三种关联查询方式的简单比较
    • SQL 时间类型的模糊查询
    • MySQL 随机查询数据与随机更新数据实现代码
    • 安全快速修改Mysql数据库名的5种方法
    • MySQL服务维护笔记第1/2页
    • mysql Innodb表空间卸载、迁移、装载的使用方法
    • sqlserver 存储过程分页代码第1/2页
    • 三种SQL分页查询的存储过程代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有