中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

知方可補不(bu)足~SQL巧用XML PATH來(lai)生成符(fu)合規則的查詢結果集

回到目錄

在查詢后面在

FOR XML PATH可(ke)以(yi)生成XML格式結果集,好好利用(yong)這個技術(shu),可(ke)以(yi)實(shi)現(xian)很多意想不到(dao)的查詢(xun)效果

最簡單的用法:

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>

我們看(kan)到是以(yi)XML格式來顯示(shi)的,注意它(ta)是個字符串,它(ta)只顯示(shi)在一行(xing)上(shang)。

可以為path加個(ge)參(can)數,來改變row節點的名(ming)稱,如

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>

當(dang)然,發(fa)揮(hui)我(wo)們的想像力,可(ke)能也會出現(xian)這種(zhong)結果

{6,ding25901}{10,zhong}

怎么樣(yang),有點像(xiang)JSON的格式標(biao)準吧,看看代碼:

SELECT TOP 2
        '{' + CAST(UserID AS VARCHAR) + ',' ,
        userName + '' ,
        '}'
FROM    dbo.User_Info
FOR     XML PATH('')

只要發揮你的(de)想(xiang)像(xiang)力(li),就有你想(xiang)不到的(de)事情(qing)發生,如果沒有xml path,可能我們還要用性(xing)能較低的(de)游(you)標

看(kan)看(kan)這個例(li)子(zi),找出(chu)用戶(hu)地(di)址表中,所有用戶(hu)的所有地(di)址信息(xi):

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

回到目錄

posted @ 2012-03-13 13:25  張占嶺  閱讀(789)  評論(1)    收藏  舉報