《SqlServer 系列》 - for xml path

一、准备

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

声明一张表,表中内容如下。

image

二、基本语法

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>

三、更改节点名称

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>

四、更改列的名称

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>

五、自定义输出格式

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

查询结果

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

六、场景应用

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

image

查询语句

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

运行结果

image

转载于:https://my.oschina.net/kimisme/blog/1605445

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值