一、开发环境

数据库:SQLServer2012

二、语法简介

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

三、语法介绍

现在数据库中有一张表

1.基本语法

  1. select * from Blog_UserInfo for xml path

运行结果:

  1. <row>
  2. <ID>1</ID>
  3. <Introduce>大家好,我叫金某</Introduce>
  4. <RealName>金某</RealName>
  5. </row>
  6. <row>
  7. <ID>2</ID>
  8. <Introduce>大家好,我叫李某</Introduce>
  9. <RealName>李某</RealName>
  10. </row>
  11. <row>
  12. <ID>3</ID>
  13. <Introduce>大家好,我叫赵某</Introduce>
  14. <RealName>赵某</RealName>
  15. </row>

2.更改根节点名称

语法:

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

运行结果:

  1. <UserInfo>
  2. <ID>1</ID>
  3. <Introduce>大家好,我叫金某</Introduce>
  4. <RealName>金某</RealName>
  5. </UserInfo>
  6. <UserInfo>
  7. <ID>2</ID>
  8. <Introduce>大家好,我叫李某</Introduce>
  9. <RealName>李某</RealName>
  10. </UserInfo>
  11. <UserInfo>
  12. <ID>3</ID>
  13. <Introduce>大家好,我叫赵某</Introduce>
  14. <RealName>赵某</RealName>
  15. </UserInfo>

3.更改列的名字

语法:

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

运行结果:

  1. <UserInfo>
  2. <myID>1</myID>
  3. <myIntrodece>大家好,我叫金某</myIntrodece>
  4. <myRealName>金某</myRealName>
  5. </UserInfo>
  6. <UserInfo>
  7. <myID>2</myID>
  8. <myIntrodece>大家好,我叫李某</myIntrodece>
  9. <myRealName>李某</myRealName>
  10. </UserInfo>
  11. <UserInfo>
  12. <myID>3</myID>
  13. <myIntrodece>大家好,我叫赵某</myIntrodece>
  14. <myRealName>赵某</myRealName>
  15. </UserInfo>

4.自定义输出格式

语法:

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

运行结果:

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

四、场景应用

现有一张如下表

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

代码:

  1. select c.Name,left(c.StuList,len(StuList)-1)as hobby from
  2. (
  3. select Name,
  4. (select Hobby +',' from Blog_UserHobby a
  5. where a.Name = b.Name
  6. for xml path(''))as StuList
  7. from Blog_UserHobby b
  8. group by b.Name
  9. )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. JavaWeb图片显示与存储

    在数据库中存储文件的名称,在存储信息资料里面存下照片,利用文件名称. 代码如下: 其中iamgeFile为 图片存储的路径userImages/ Resultuser.setImageName(Pro ...

  2. [bzoj2463][中山市选2009]谁能赢呢?_博弈论

    博弈论 bzoj-2463 中山市选-2009 题目大意:题目链接. 注释:略. 想法: 如果$n$是偶数的话就可以被多米诺骨牌恰好覆盖,这样的话只需要先手先走向(1,1)对应的第二段,后者必定会将棋 ...

  3. iText输出中文的三种字体选择方式

    1.使用iTextAsian.jar中的字体    BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",Bas ...

  4. Django学习系列之django restframework

    曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful A ...

  5. IOS开发UI篇--一个支持图文混排的ActionSheet

    一.简单介绍 UIActionSheet是IOS提供给我们开发人员的底部弹出菜单控件.一般用于菜单选择.操作确认.删除确认等功能.IOS官方提供的下面方式对UIActionView进行实例化: - ( ...

  6. 混合式框架-AgileLite

    Agile Lite是一个HTML5移动前端框架.支持jQuery和Zepto双引擎.而且提供与UI无关的独立框架,内置了Flat UI样式和Ratchet样式.同一时候也支持单页模式和多页模式开发. ...

  7. ssh服务常见问题及其解决办法

    1 统一解决办法 执行sshd -t,这样就可以指出是哪里出问题了. 所有的服务都应该有这个测试选项,否则出错了都不知道在哪里出的问题. 2 root用户登录,密码是对的,但是报“Permission ...

  8. 稀疏表示 Sparse Representation

    稀疏表示_百度百科 https://baike.baidu.com/item/%E7%A8%80%E7%96%8F%E8%A1%A8%E7%A4%BA/16530498 信号稀疏表示是过去近20年来信 ...

  9. Yaf的性能

    http://www.laruence.com/manual/yaf.bench.html 之前团队代码在ip的根下 http://192.168.6.212:83/js/common.js ; cd ...

  10. HTTP要点概述:七,编码,压缩传输,分块传输

    一,编码: HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率.通过在传输时编码,能有效地处理大量的访问请求.但是,编码的操作需要计算机来完成,因此会消耗更多的 ...