SQL巧用XML PATH来生成符合规则的查询结果集

来源:未知 责任编辑:责任编辑 发表时间:2014-05-20 18:34 点击:
在查询后面在
FOR     XML PATH可以生成XML格式结果集,好好利用这个技术,可以实现很多意想不到的查询效果
最简单的用法:
SELECT USERID,USERNAME FROM DBO.USER_INFO FOR XML PATH
结果类似这样
<row>
  <USERID>6</USERID>
  <USERNAME>ding25901</USERNAME>
</row>
<row>
  <USERID>10</USERID>
  <USERNAME>zhong</USERNAME>
</row>
<row>
  <USERID>11</USERID>
  <USERNAME>yanxunhan</USERNAME>
</row>
我们看到是以XML格式来显示的,注意它是个字符串,它只显示在一行上。
可以为path加个参数,来改变row节点的名称,如
SELECT USERID,USERNAME FROM DBO.USER_INFO FOR XML PATH('zzl')
结果变成了这样
<zzl>
  <USERID>6</USERID>
  <USERNAME>ding25901</USERNAME>
</zzl>
<zzl>
  <USERID>10</USERID>
  <USERNAME>zhong</USERNAME>
</zzl>
当然,发挥我们的想像力,可能也会出现这种结果
{6,ding25901}{10,zhong}
怎么样,有点像JSON的格式标准吧,看看代码:
SELECT TOP 2
        '{' + CAST(UserID AS VARCHAR) + ',' ,
        userName + '' ,
        '}'
FROM    dbo.User_Info
FOR     XML PATH('')
只要发挥你的想像力,就有你想不到的事情发生,如果没有xml path,可能我们还要用性能较低的游标
看看这个例子,找出用户地址表中,所有用户的所有地址信息:
SELECT  B.userid ,
        List
FROM    ( SELECT    userid ,
                    ( SELECT    c.address + ','
                      FROM      dbo.UserAddress c
                      WHERE     c.UserID = a.userid
                    FOR
                      XML PATH('')
                    ) AS List
          FROM      dbo.UserAddress A
          GROUP BY  userid
        ) B
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • sql server 列转行
  • SQL小技巧系列 --- 行转列合并
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1