SqlServer拼接某字段

发布于 2019-05-05  950 次阅读


话不多说,直接开始

For XML PATH ('')
  该函数用于将SQL的查询结果生成xml文件,PATH('')中的值为节点名,比如执行下面这句SQL:

select top (3) UserName  from Sys_UserInf for xml path('node')

得到结果如下:

<node>
  <UserName>系统管理员</UserName>
</node>
<node>
  <UserName>系统管理员</UserName>
</node>
<node>
  <UserName>王二妮</UserName>
</node>

所以我们将PATH函数参数设置为空串,即PATH(''),可以得到:

<UserName>系统管理员</UserName>
<UserName>系统管理员</UserName>
<UserName>王二妮</UserName>

最后我们将UserName前加上分隔符 ' , ' 完成拼接:

select top (3) ','+UserName  from Sys_UserInf for xml path('')

得到的结果还不太完善,因为最前面还有一个' , ',我们用STUFF函数,将其切割掉,即:

select STUFF( (select top (3) ','+UserName  from Sys_UserInf for xml path('')),1,1,'')

得到最终结果:

系统管理员,系统管理员,王二妮

疑问

在操作过程中,我对为什么在UserName前面加上逗号之后,XML文档的格式就不再是标签格式产生了疑问,暂时还没有得到结果,后续进行更新。2019年5月5日17:52:07


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。