归来目录

在询问前边在

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 中东,

回去目录

相关文章

网站地图xml地图