数据库

当前位置:澳门永利手机版 > 数据库 > SQL - for xml path('') 实现多行合并到一行, 并

SQL - for xml path('') 实现多行合并到一行, 并

来源:http://www.xiaonipaipai.com 作者:澳门永利手机版 时间:2019-10-29 21:40

         结果如下:百度澳门永利登录网址 1

这句是通过FOR XML PATH 将某一姓名如张三的爱好,显示成格式为:“ 爱好1,爱好2,爱好3,”的格式!

百度澳门永利登录网址,]( XML PATH应用**

百度澳门永利登录网址 2

 

SELECT*FROM@hobbyFOR XML PATH

 

剩下的代码首先是将表分组,在执行FOR XML PATH 格式化,这时当还没有执行最外层的SELECT时查询出的结构为:

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM (
SELECT sName,
(SELECT hobby ',' FROM student 
  WHERE sName=A.sName 
  FOR XML PATH('')) AS StuList
FROM student A 
GROUP BY sName
) B 

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM (
SELECT sName,
(SELECT hobby ','FROM student
WHERE sName=A.sName
FOR XML PATH('')) AS StuList
FROM student A
GROUPBY sName
) B

 

百度澳门永利登录网址 3

        这时,我们的要求是查询学生表,显示所有学生的爱好的结果集,代码如下:

那么,如何改变XML行节点的名称呢?代码如下:

 

这个时候细心的朋友一定又会问那么列节点如何改变呢?还记的给列起别名的关键字AS吗?对了就是用它!代码如下:

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby  就是来去掉逗号

[ 爬山 ][ 游泳 ][ 美食 ]

 

SELECT'{' STR(hobbyID) '}','[ ' hName ' ]'FROM@hobbyFOR XML PATH('')

首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下:

SELECT'[ ' hName ' ]'FROM@hobbyFOR XML PATH('')

docs.microsoft.com 链接:  [SQL 

二.一个应用场景与FOR XML PATH应用

 

<MyHobby>
<MyCode>1</MyCode>
<MyName>爬山</MyName>
</MyHobby>
<MyHobby>
<MyCode>2</MyCode>
<MyName>游泳</MyName>
</MyHobby>
<MyHobby>
<MyCode>3</MyCode>
<MyName>美食</MyName>
</MyHobby>

           百度澳门永利登录网址 4

首先呢!我们在增加一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好!那么现在表结构如下:

接下来我们来看一个FOR XML PATH的应用场景吧!那么开始吧。。。。。。

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.

噢! 既然行的节点与列的节点我们都可以自定义,我们是否可以构建我们喜欢的输出方式呢?还是看代码:

SELECT hobbyID as'MyCode',hName as'MyName'FROM@hobbyFOR XML PATH('MyHobby')

结果如下:百度澳门永利登录网址 5

SELECT*FROM@hobbyFOR XML PATH('MyHobby')

那么其他类型的列怎么自定义? 没关系,我们将它们转换成字符串类型就行啦!例如:

结果:

接下来我们来看应用FOR XML PATH的查询结果语句如下:

百度澳门永利登录网址 6

 

本文由澳门永利手机版发布于数据库,转载请注明出处:SQL - for xml path(&#39;&#39;) 实现多行合并到一行, 并

关键词: