一、开发环境

数据库:SQLServer2012

二、语法简介

for xml path它以xml形式展示查询的结果集

三、语法介绍

现在数据库中有一张表

1.基本语法

select * from Blog_UserInfo for xml path

运行结果:

<row>
<ID>1</ID>
<Introduce>大家好,我叫金某</Introduce>
<RealName>金某</RealName>
</row>
<row>
<ID>2</ID>
<Introduce>大家好,我叫李某</Introduce>
<RealName>李某</RealName>
</row>
<row>
<ID>3</ID>
<Introduce>大家好,我叫赵某</Introduce>
<RealName>赵某</RealName>
</row>

2.更改根节点名称

语法:

select * from Blog_UserInfo for xml path('UserInfo')

运行结果:

<UserInfo>
<ID>1</ID>
<Introduce>大家好,我叫金某</Introduce>
<RealName>金某</RealName>
</UserInfo>
<UserInfo>
<ID>2</ID>
<Introduce>大家好,我叫李某</Introduce>
<RealName>李某</RealName>
</UserInfo>
<UserInfo>
<ID>3</ID>
<Introduce>大家好,我叫赵某</Introduce>
<RealName>赵某</RealName>
</UserInfo>

3.更改列的名字

语法:

select ID as 'myID',Introduce as 'myIntrodece',RealName as 'myRealName' from Blog_UserInfo for xml path('UserInfo')

运行结果:

<UserInfo>
<myID>1</myID>
<myIntrodece>大家好,我叫金某</myIntrodece>
<myRealName>金某</myRealName>
</UserInfo>
<UserInfo>
<myID>2</myID>
<myIntrodece>大家好,我叫李某</myIntrodece>
<myRealName>李某</myRealName>
</UserInfo>
<UserInfo>
<myID>3</myID>
<myIntrodece>大家好,我叫赵某</myIntrodece>
<myRealName>赵某</myRealName>
</UserInfo>

4.自定义输出格式

语法:

select '{'+ltrim(str(ID))+'}'+'['+RealName+']' from Blog_UserInfo for xml path('')

运行结果:

{1}[金某]{2}[李某]{3}[赵某]

四、场景应用

现有一张如下表

需求:查询出每个学生的所有爱好集

代码:

select c.Name,left(c.StuList,len(StuList)-1)as hobby from
(
select Name,
(select Hobby +',' from Blog_UserHobby a
where a.Name = b.Name
for xml path(''))as StuList
from Blog_UserHobby b
group by b.Name
)c

运行结果:

五、参考文章

http://www.cnblogs.com/qixuejia/p/4242078.html

数据库学习:for xml path的更多相关文章

  1. Sql server For XML Path 学习

    最近看到太多人问这种问题   自己也不太了解  就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...

  2. sqlserver -- 学习笔记(八)体验charindex、stuff 和 for xml path在实际问题中的应用及几个问题的探讨

    写在前面 之前做了个微信端顾客扫码评价员工的功能,除了打分数,还可以打标签. 需要统计分数和统计各个员工每种标签被点击的次数. 后来加了个要求,需要查看客户对某个员工一次服务所打出的标签组合.  在不 ...

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

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

  4. 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器

    1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...

  5. sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符

    由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...

  6. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. SQL-学习使用FOR XML PATH

    前言:本人SQL技术很烂,然后工作时间也不久,许多东西都还在学习中,说的不好的地方尽请谅解. 首先跟大家说一下我今天遇到的问题吧. 查出的数据有三列,第一列存放的是32位的GUID,Res_Name存 ...

  8. 数据库中操作XML(openXML)

    最近公司项目需要在数据库中操作XML,因此系统的学习了一下 一.openxml的格式 OPENXML( idoc int [ in] , XPathnvarchar [ in ] , [ flags ...

  9. for xml path 如何将字段转换为xml的属性

    for xml path 如何将字段作为xml的属性: 可在查询时 别名用 as '@..' 如'@value' 如下实例: SELECT A.GiftSetGUID AS '@value',A.Gi ...

随机推荐

  1. Java 输入一个正整数,按蛇形打印。

    参考博客:    http://yangyingming.com/article/371/ //输入一个正整数n(n<=30),输出n所对应的蛇形矩阵.举两个例子: //n=10时,蛇形矩阵为: ...

  2. yum install tree 出错primary.sqlite.bz2: [Errno -1] Metadata file does not match checks 解决办法

    Loaded plugins: fastestmirrorLoading mirror speeds from cached hostfilehttp://ftp.sjtu.edu.cn/centos ...

  3. Memcached集群之通过Repcached实现主从复制(待实践)

    暂时了解有这东西,不搭建了. Mamcached可以通过Repcached实现主从复制.有以下优缺点: 优点: 1.能够实现Cache的冗余功能 2.主从之间可以互相读写(亮点) 参考: http:/ ...

  4. JSP中HTTP状态码

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/http-status-codes.html: HTTP请求格式和HTTP响应消息的格式一样,都有以下结构 ...

  5. java代码判断文件类型(判断文件后缀名)

    1.两点需要注意 1.string.spilt("\\.")分割字符串成子字符串数组,以“.”分割,必须写成string.spilt("\\.")的方式,不能写 ...

  6. Office 针式打印机如何调节边距

    1 右击针式打印机,选择"打印机属性"   2 点击"打印机参数设置"选项卡,之前打印出来如果发现上下距离不合适,可以通过调节但也纸页顶距来调整   该参数值可 ...

  7. 安装eclipse中html/jsp/xml editor插件以及改动html页面的字体

    近期在做android项目,用到了jquery mobile 框架以及phonegap,所以就会涉及一些html文件,可是html文件打开的方式是Text Editor ,而且打开之后一些html代码 ...

  8. nlssort排序

    ALTER SESSION SET NLS_SORT=''; 排序影响整个会话 Oracle9i之前,中文是按照二进制编码进行排序的. 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NL ...

  9. 中国第二代身份证验证js代码

    以下这部分代码截取自盛大的某个网页.详细我就不给url了.以下是相应的js代码: iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); iSum ...

  10. 硬件十万个为什么——运放篇(五)PCB设计技巧

    1.在PCB设计时,芯片电源处旁路滤波等电容应尽可能的接近器件.典型距离是小于3MM 2.运算放大器芯片电源处的小陶瓷旁路电容在放大器处于输入高频信号时能够为放大器的高频特性提供能量电容值的选择依据输 ...