我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用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. PHP控制反转(IOC)和依赖注入(DI)

    先看一个例子: <?php class A { public $b; public $c; public function A() { //TODO } public function Meth ...

  2. Hibernate框架Criteria查询

    本文章适合一些初学者 一.使用Criteria查询数据        1.条件查询            1.1:使用Criteria查询的步骤                    1.使用Sess ...

  3. 2017-3-9 SQL server 数据库

    数据库的定义:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,简单说数据库是一些存储在硬盘上的数据文件,随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所 ...

  4. CSS3形变——transform与transform-origin画时钟

    css3属性transform和transform-origin"画"时钟 效果图 前言 八哥:哈喽,大家好!好攻城狮就是我就是你们的小八,欢迎收听你的月亮...哦不,是很高兴与你 ...

  5. 【SysML】模块定义图(BDD, Block Definition Diagram)

    一.引言 SysML中的模块定义图,英文为 “Block Definition Diagram”,简称BDD,是系统建模过程中最为常见的图之一,BDD是一种结构图,它主要对系统的结构组成以及组成元素间 ...

  6. Java synchronized 关键字的实现原理

    数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现sy ...

  7. 修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式

    Delphi 10.1.2 edit控件在android默认的复制.剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观. 默认的样式: 修改后的样式: 修改FM ...

  8. CentOS 中 YUM 安装桌面环境(转)

    使用 yum groupinstall 指令很容易就能安装上图形界面的桌面系统. 1. yum 的 group 指令 yum 可以以程序组的模式来安装成套的软件包.支持的软件包可以通过, # yum ...

  9. Office 365开发环境概览

    本文于2017年3月26日首发于LinkedIn,原文链接请参考这里 本系列文章已经按照既定计划在每周更新,此前的几篇文章如下 Office 365 开发概览系列文章和教程 Office 365开发概 ...

  10. JSON与JAVA的数据转换

    http://developer.51cto.com/art/200906/129090.htm java.lang.ClassNotFoundException: net.sf.json.JSONA ...