响应式网站软件,php 网站开发框架ap,投资公司成立条件,宁波公司建网站哪家好FOR XML PATH 有的人可能知道有的人可能不知道#xff0c;其实它就是将查询结果集以XML形式展现#xff0c;有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR… FOR XML PATH 有的人可能知道有的人可能不知道其实它就是将查询结果集以XML形式展现有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首先来介绍一下FOR XML PATH 假设现在有一张兴趣爱好表hobby用来存放兴趣爱好表结构如下 接下来我们来看应用FOR XML PATH的查询结果语句如下 SELECT*FROMhobbyFORXML PATH 结果 row hobbyID1/hobbyID hName爬山/hName/rowrow hobbyID2/hobbyID hName游泳/hName/rowrow hobbyID3/hobbyID hName美食/hName/row 由此可见FOR XML PATH 可以将查询结果根据行输出成XML各式 那么如何改变XML行节点的名称呢代码如下 SELECT*FROMhobbyFORXML PATH(MyHobby) 结果一定也可想而知了吧没错原来的行节点row 变成了我们在PATH后面括号()中自定义的名称MyHobby,结果如下 MyHobby hobbyID1/hobbyID hName爬山/hName/MyHobbyMyHobby hobbyID2/hobbyID hName游泳/hName/MyHobbyMyHobby hobbyID3/hobbyID hName美食/hName/MyHobby 这个时候细心的朋友一定又会问那么列节点如何改变呢还记的给列起别名的关键字AS吗对了就是用它!代码如下 SELECThobbyID asMyCode,hName asMyNameFROMhobbyFORXML PATH(MyHobby) 那么这个时候我们列的节点名称也会编程我们自定义的名称 MyCode与MyName结果如下 MyHobby MyCode1/MyCode MyName爬山/MyName/MyHobbyMyHobby MyCode2/MyCode MyName游泳/MyName/MyHobbyMyHobby MyCode3/MyCode MyName美食/MyName/MyHobby 噢 既然行的节点与列的节点我们都可以自定义我们是否可以构建我们喜欢的输出方式呢还是看代码 SELECT[ hName]FROMhobbyFORXML PATH() 没错我们还可以通过符号号来对字符串类型字段的输出格式进行定义。结果如下 [ 爬山 ][ 游泳 ][ 美食 ] 那么其他类型的列怎么自定义 没关系我们将它们转换成字符串类型就行啦例如 SELECT{STR(hobbyID)},[ hName]FROMhobbyFORXML PATH() 好的 FOR XML PATH就基本介绍到这里吧更多关于FOR XML的知识请查阅帮助文档 接下来我们来看一个FOR XML PATH的应用场景吧那么开始吧。。。。。。 二.一个应用场景与FOR XML PATH应用 首先呢我们在增加一张学生表列分别为stuID,sName,hobby,stuID代表学生编号sName代表学生姓名hobby列存学生的爱好那么现在表结构如下 这时我们的要求是查询学生表显示所有学生的爱好的结果集代码如下 SELECTB.sName,LEFT(StuList,LEN(StuList)-1) ashobby FROM(SELECTsName,(SELECThobby,FROMstudent WHEREsNameA.sName FORXML PATH()) ASStuListFROMstudent A GROUPBYsName) B 结果如下: 分析 好的那么我们来分析一下首先看这句 SELECThobby,FROMstudent WHEREsNameA.sName FORXML PATH() 这句是通过FOR XML PATH 将某一姓名如张三的爱好显示成格式为“ 爱好1爱好2爱好3”的格式 那么接着看 SELECTB.sName,LEFT(StuList,LEN(StuList)-1) ashobby FROM(SELECTsName,(SELECThobby,FROMstudent WHEREsNameA.sName FORXML PATH()) ASStuListFROMstudent A GROUPBYsName) B 剩下的代码首先是将表分组在执行FOR XML PATH 格式化这时当还没有执行最外层的SELECT时查询出的结构为: 可以看到StuList列里面的数据都会多出一个逗号这时随外层的语句:SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby 就是来去掉逗号并赋予有意义的列明 好啦太晚啦就说到这里吧 From:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html转载于:https://www.cnblogs.com/flysnow-z/p/3598085.html