for xml path 如何将字段转换为xml的属性
我们通常需要获取一个多行的某个字段拼出的字符串,我们可以使用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的属性的更多相关文章
- mssql for xml path使用
准备工作: CREATE TABLE [dbo].[Students]( [id] [int] IDENTITY(1,1) NOT NULL, [names] [varchar](50) NULL, ...
- sql server的for xml path与变通的行转列
SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...
- For xml path
Select * from tb for xml path('') 特点: 1. 以xml形式展示查询数据. 2. 自定义数据展示类型. 实例: 1. Select * from tb for xml ...
- 转载---SQL Server XML基础学习<1>之--FOR XML PATH
--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb ...
- 使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理
在一个医药行业的系统中需要根据患者的接触记录ID获取不同接触类型的集合,效果像这样 --患者接触记录信息,一个患者可以有N个不同的接触记录,每个接触记录又有N个接触类型记录 IF OBJECT ...
- xBIM 基础06 将STEP物理文件转换为XML
系列目录 [已更新最新开发文章,点击查看详细] 一.STEP标准简介 STEP,它是Standard for the Exchange of Product model data的缩写.产品数 ...
- SQL SERVER数据库内 FOR XML PATH 函数用法
把自己点点滴滴的学习记录下来!!!! 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(TBJTXXCE)用来存放就诊患者信息,表结构 ...
- 多条记录的同一字段组合成一个字符串 FOR XML PATH
stuff(select ',' + fieldname from tablename for xml path('')),1,1,'') 这一整句的作用是将多行fieldname字段的内容串联起来, ...
- sql server 多条数据字段合并及创建临时表 FOR XML PATH
SELECT 字段=(SELECT b.合并字段+',' FROM 表一 AS b WHERE b.相同条件=a.相同条件 FOR XML PATH('')) FROM 表一 AS a DECLARE ...
随机推荐
- 软件测试之fault、error和failure的理解
(1) Identify the fault : The first element of the array is not looped. "for(int i=x.length-1;i ...
- 九度OJ题目1443:Tr A (JAVA)
题目描述: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. 输入: 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n & ...
- 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)
一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...
- linux codeblocks汉化
参考window汉化codeblocks,linux下有点麻烦,就是要找到codeblocks的文件安装在哪里.一般来说,linux下安装的软件大都在/usr/share/文件夹下,所以进入/usr/ ...
- Python实现的异步代理爬虫及代理池
使用python asyncio实现了一个异步代理池,根据规则爬取代理网站上的免费代理,在验证其有效后存入redis中,定期扩展代理的数量并检验池中代理的有效性,移除失效的代理.同时用aiohttp实 ...
- 使用htmlparse爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- 【转】请求处理机制其三:view层与模板解析
进入 View 了 如果处理过程这时候还在继续的话,处理器会调用 view function.Django 中的 Views 不很严格因为它只需要满足几个条件: 必须可以被调用. 必须接受 djan ...
- js模块化加载器实现
背景 自es6以前,JavaScript是天生模块化缺失的,即缺少类似后端语言的class, 作用域也只以函数作为区分.这与早期js的语言定位有关, 作为一个只需要在网页中嵌入几十上百行代码来实现一些 ...
- ngrok localhost和http 的转换
得益于老大的教导,今天又接触到一个有意思的东西,希望分享出来,供大家玩耍----“ngrok”: 乍一看还以为是angualar的新玩意,其实不是.这这家伙可以使本地开发的web应用,不用打包上传,也 ...
- C# const和readonly修饰符的区别
const 的概念就是一个包含不能修改的值的变量.常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量.如果 const int a = b+1;b是一个变量,显然不能再 ...