SQLServer中sql for xml path 的用法

Posted 石涛涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer中sql for xml path 的用法相关的知识,希望对你有一定的参考价值。

 

 

我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用for xml path进行处理;下面将介绍for xml path的具体用法;

创建测试表&插入测试数据

在数据库中新增测试表

CREATE TABLE MyTest(
  UserName VARCHAR(50),
  Email VARCHAR(100)
)

插入测试数据

 View Code

数据库有如下两条数据

 

for xml path使用

普通用法

创建根节点为user的xml

SELECT UserName ,
Email FROM MyTest FOR XML PATH(\'User\')

运行结果:

复制代码
<User>
  <UserName>张三</UserName>
  <Email>zhangsan@163.com</Email>
</User>
<User>
  <UserName>李四</UserName>
  <Email>lisi@163.com</Email>
</User>
复制代码

自定义节点名称

给对应的字段取别名即可,如下将UserName取别名为MyUser

SELECT UserName AS MyUser ,
Email  FROM MyTest FOR XML PATH(\'User\')

运行结果

复制代码
<User>
  <MyUser>张三</MyUser>
  <Email>zhangsan@163.com</Email>
</User>
<User>
  <MyUser>李四</MyUser>
  <Email>lisi@163.com</Email>
</User>
复制代码

将字段作为xml的属性

 可在查询时 别名用 as '@..' 如\'@value\'

SELECT UserName AS \'@UserName\' ,
Email AS \'@Email\'  FROM MyTest FOR XML PATH(\'User\')

运行结果

<User UserName="张三" Email="zhangsan@163.com" />
<User UserName="李四" Email="lisi@163.com" />

行转列拼接字符串

如将所有姓名拼接为,隔开的字符串

SELECT UserName+\',\' FROM MyTest FOR XML PATH(\'\')

结果

张三,李四,

这里多了一个,需要再次加工处理一下,通过处理字符串将最后一个逗号去掉即可,可通过SQL中的left函数处理,这里不做介绍;

具体用法可参考我的另一篇文章----SQL Server 中截取字符串常用的函数

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。

如果,您希望更容易地发现我的新博客,不妨点击一下,【关注我

如果,您希望给我更多的鼓励,不妨在右侧点击,【打赏一下

博文是自己对学习成果的总结,学习总结知识-》分析问题-》解决问题。

文中存在的观点/描述不正确的地方,欢迎指正。

感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是yxtic 。

以上是关于SQLServer中sql for xml path 的用法的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 FOR XML SQL Server 查询的完整结果?

使用 SQL FOR XML 创建 HTML 表

SQL Server FOR XML PATH('')) 加密数据需要在 C# 中解密

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

在 SQL Server 2008 中使用 FOR XML PATH 提高 SQL 查询的性能

sql for xml path 和group_concat