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

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

在数据库中新增测试表

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

插入测试数据

INSERT INTO MyTest
( UserName, Email )
VALUES ( '张三', -- UserName - varchar(50)
'zhangsan@163.com' -- Email - varchar(100)
)
INSERT INTO MyTest
( UserName, Email )
VALUES ( '李四', -- UserName - varchar(50)
'lisi@163.com' -- Email - varchar(100)
)

数据库有如下两条数据

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 中截取字符串常用的函数

for xml path 如何将字段转换为xml的属性的更多相关文章

  1. mssql for xml path使用

    准备工作: CREATE TABLE [dbo].[Students]( [id] [int] IDENTITY(1,1) NOT NULL, [names] [varchar](50) NULL, ...

  2. sql server的for xml path与变通的行转列

    SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...

  3. For xml path

    Select * from tb for xml path('') 特点: 1. 以xml形式展示查询数据. 2. 自定义数据展示类型. 实例: 1. Select * from tb for xml ...

  4. 转载---SQL Server XML基础学习<1>之--FOR XML PATH

    --> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL    DROP TABLE #tbGO CREATE TABLE #tb      ...

  5. 使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理

    在一个医药行业的系统中需要根据患者的接触记录ID获取不同接触类型的集合,效果像这样     --患者接触记录信息,一个患者可以有N个不同的接触记录,每个接触记录又有N个接触类型记录 IF OBJECT ...

  6. xBIM 基础06 将STEP物理文件转换为XML

    系列目录    [已更新最新开发文章,点击查看详细]  一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...

  7. SQL SERVER数据库内 FOR XML PATH 函数用法

    把自己点点滴滴的学习记录下来!!!! 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(TBJTXXCE)用来存放就诊患者信息,表结构 ...

  8. 多条记录的同一字段组合成一个字符串 FOR XML PATH

    stuff(select ',' + fieldname from tablename for xml path('')),1,1,'') 这一整句的作用是将多行fieldname字段的内容串联起来, ...

  9. sql server 多条数据字段合并及创建临时表 FOR XML PATH

    SELECT 字段=(SELECT b.合并字段+',' FROM 表一 AS b WHERE b.相同条件=a.相同条件 FOR XML PATH('')) FROM 表一 AS a DECLARE ...

随机推荐

  1. PetaPoco 快速上手

    今天来给大家分享一个好用的轻型的.net框架的ORM——PetaPoco 本着快速上手的原则,我们通过和EF对比,让大家能快速使用PetaPoco PetaPoco大家可能没有听说过,但大家一定听说过 ...

  2. ThinkPHP框架知识的注意点

    ThinkPHP框架 访问入口文件后在application文件夹中会出现一些文件夹,其中的home文件夹是前端模块,也可以在application文件夹中新建文件夹.home文件夹模块中Conf文件 ...

  3. spring提供的线程池

    SPRING中的线程池ThreadPoolTaskExecutor 分类: JAVA Spring2013-07-12 10:36 14896人阅读 评论(9) 收藏 举报 Spring线程池多线程 ...

  4. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-4

    来个目录吧: 第一章-入门 第二章- Entity Framework Core Nuget包管理 第三章-创建.修改.删除.查询 第四章-排序.过滤.分页.分组 第五章-迁移,EF Core 的co ...

  5. String字符串截取跟替换经典案例

    分享下今天的一个面试题吧!不算有难度,但是没做出来 题目:将String  str="姓名:武亚伟,年龄:27,地址:西安市": 输出结果为:姓名=武亚伟 年龄=27 地址=西安市 ...

  6. Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器

    请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/55230272 Android实现录 ...

  7. Eclipse添加tomcat出现 The Apache Tomcat installation at this directory is version 8.5.6. A Tomcat 8.0 installation is expected.

    打开tomcat安装目录:apache-tomcat-8.5.6\lib 找到catalina.jar 用解压缩工具打开 org/apache/catalina/util/ServerInfo.pro ...

  8. TypeScript设计模式之中介者、观察者

    看看用TypeScript怎样实现常见的设计模式,顺便复习一下. 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想 ...

  9. 开源免费的.NET图像即时处理的组件ImageProcessor

    承接以前的组件系列,这个组件系列旨在介绍.NET相关的组件,让大家可以在项目中有一个更好的选择,社区对于第三方插件的介绍还是比较少的,很多博文的内容主要还是介绍一些简单的操作(很多人都说博客园现在是“ ...

  10. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(中)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(中)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...