数据库学习:for xml path
一、开发环境
数据库: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的更多相关文章
- Sql server For XML Path 学习
最近看到太多人问这种问题 自己也不太了解 就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...
- sqlserver -- 学习笔记(八)体验charindex、stuff 和 for xml path在实际问题中的应用及几个问题的探讨
写在前面 之前做了个微信端顾客扫码评价员工的功能,除了打分数,还可以打标签. 需要统计分数和统计各个员工每种标签被点击的次数. 后来加了个要求,需要查看客户对某个员工一次服务所打出的标签组合. 在不 ...
- 转载---SQL Server XML基础学习<1>之--FOR XML PATH
--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb ...
- 一个由正则表达式引发的血案 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. 一些特殊字符,如“&”,“- ...
- sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符
由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- SQL-学习使用FOR XML PATH
前言:本人SQL技术很烂,然后工作时间也不久,许多东西都还在学习中,说的不好的地方尽请谅解. 首先跟大家说一下我今天遇到的问题吧. 查出的数据有三列,第一列存放的是32位的GUID,Res_Name存 ...
- 数据库中操作XML(openXML)
最近公司项目需要在数据库中操作XML,因此系统的学习了一下 一.openxml的格式 OPENXML( idoc int [ in] , XPathnvarchar [ in ] , [ flags ...
- for xml path 如何将字段转换为xml的属性
for xml path 如何将字段作为xml的属性: 可在查询时 别名用 as '@..' 如'@value' 如下实例: SELECT A.GiftSetGUID AS '@value',A.Gi ...
随机推荐
- Ubuntu 16.04安装RapidSVN
使用RabbitVCS有一些不完美,比如没有把文件增加到版本库的功能,导致无法提交等问题,现在再次安装RapidSVN来弥补这些缺点. 安装: sudo apt-get install rapidsv ...
- 在Windows下搭建RocketMQ
原文:http://blog.csdn.net/u014134180/article/details/51790988 目录 目录 一 准备工作 1 RocketMQ部署架构1 2 环境配置 二 安装 ...
- [Spring] Bean Scope Singleton cs Prototype
We can define a class to be Singleton or Prototype. If the class was defined as Prototype, then ever ...
- JSP自己定义标签入门实例具体解释
JSP自己定义标签主要能用到的两个包 javax.servlet.jsp.*;javax.servlet.jsp.tagext.*; 自己定义标签<userInfo:showUserInfo/& ...
- struts1与struts2的差别
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与Struts 1的体系结 ...
- javaweb_page指令
jsp指令: 1.作用:jsp指令是为jsp引擎设计的.他们并不直接产生不论什么课件输出.而是告诉引擎怎样处理jsp页面中的其余部分 2.jsp指令包含:page指令.include指令,taglib ...
- shell脚本 加密备份MySQL数据库
1.加密备份为.bak文件(实际只是个.zip文件) #!/bin/bash # $:IP地址 # $:用户名 # $:数据库密码 # $:数据库名 # $:加密密码 # $:备份文件名 mysqld ...
- 洛谷 P1759 通天之潜水
P1759 通天之潜水 19通过 65提交 题目提供者lych 标签动态规划洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 直达通天路·小A历险记第三篇 题目 ...
- Redis内存使用达到maxmemory设定值后玩家数据无法写入解决 Redis数据“丢失”问题
Redis数据“丢失”问题 - CSDN博客 https://blog.csdn.net/real_myth/article/details/52582739 Redis内存使用达到maxmemory ...
- SQl 事物+视图+游标+索引+锁
一:事务: 是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务是恢复和并发控制的基本单位. 事务的四个特性:ACID A:atomicity 原子性,事务里的所有操作都是一体的,要 ...