知方可补不足~SQL巧用XML PATH来生成符合规则的查询结果集
2012-03-13 13:25
253 查看
回到目录
在查询后面在
FOR XML PATH可以生成XML格式结果集,好好利用这个技术,可以实现很多意想不到的查询效果
最简单的用法:
结果类似这样
我们看到是以XML格式来显示的,注意它是个字符串,它只显示在一行上。
可以为path加个参数,来改变row节点的名称,如
结果变成了这样
当然,发挥我们的想像力,可能也会出现这种结果
{6,ding25901}{10,zhong}
怎么样,有点像JSON的格式标准吧,看看代码:
只要发挥你的想像力,就有你想不到的事情发生,如果没有xml path,可能我们还要用性能较低的游标
看看这个例子,找出用户地址表中,所有用户的所有地址信息:
结果是:
userid addresslist
------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
010E3E9D-67F5-4C25-80A7-0B56D03F3427 日本,中国,
062061EB-61F2-49A3-AA87-7BD5A59F5970 中国,美国,
1A58A662-A3DF-4BEE-B0D0-B0F73846D55B 中东,
回到目录
在查询后面在
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
结果是:
userid addresslist
------------------------------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
010E3E9D-67F5-4C25-80A7-0B56D03F3427 日本,中国,
062061EB-61F2-49A3-AA87-7BD5A59F5970 中国,美国,
1A58A662-A3DF-4BEE-B0D0-B0F73846D55B 中东,
回到目录
相关文章推荐
- SQL巧用XML PATH来生成符合规则的查询结果集
- SQL SERVER中 用FOR XML PATH将查询结果以XML输出 然后应用于 sql 合并字段功能介绍
- SQL 字段charindex,stuff,ltrim, for xml path('') 操作字符串 合并查询结果项值
- linq to sql取出随机记录/多表查询/将查询出的结果生成xml
- linq to sql取出随机记录/多表查询/将查询出的结果生成xml
- sql查询结果转XML和JSON
- FOR XML PATH应用之用一条SQL语句横向合并结果行
- SQL查询 生成XML
- 和SQL内连接不同,SQL外连接返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行,下面就为您详细介绍SQL外连接,
- 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!
- SQL Server 中的XML支持,查询返回XML,Web访问SQL取XML形式结果
- 从查询结果中生成xml
- 问题:sqlserver有没有类似Oracle的LISTAGG;结果: 灵活运用 SQL SERVER FOR XML PATH
- c#对PL/SQL查询结果列复制的结果生成指定格式
- 【转】灵活运用 SQL SERVER FOR XML PATH。用于方便处理生成视图
- SQL查询结果导出XML文件简单的方法
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
- 将根据字符查询转换后输出结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
- 对sql for xml的查询结果作分页处理思路
- SQL查询结果导出XML文件简单的方法