澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

【澳门太阳娱乐集团官网】for xml path以及sql合并
分类:数据库

docs.microsoft.com 链接:  [SQL 

sql中for xml path的用法。

]( XML PATH应用*澳门太阳娱乐集团官网,*

T-sql 有贰个for xml path('')的从句能把多行结果合并到一行,并化作xml 格式

 

比方有一张表tb有两列,其格式和数码为:

率先呢!大家在加码一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的喜好!那么未来表结构如下:

**

 

**

           澳门太阳娱乐集团官网 1

id value
—————
1 aa
1 bb
2 aaa
2 bbb
2 ccc**

 

假定对其实行sql: select id, value from tb for xml path('tbnode')
则赶回的结果集仅为一行一列:

        这时,大家的渴求是询问学生表,展现全体学生的喜欢的结果集,代码如下:

<tbnode><id>1</id><value>aa</value><id>1</id><value>bb</value>........<id>2</id><value>ccc</value></tbnode>

 

现今大家取巧一点, 省略path括号里的剧情, 同一时间把这两列想艺术形成无名氏列,sql如下:

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM (
SELECT sName,
(SELECT hobby+',' FROM student 
  WHERE sName=A.sName 
  FOR XML PATH('')) AS StuList
FROM student A 
GROUP BY sName
) B 

 

         结果如下:澳门太阳娱乐集团官网 2

  1. select id+'',value+'' from tb for xml path('')     //在path("") 不写任王志平西会自动生成多个队列标志符

  2. 那正是说再次来到结果如下(也是叁个一行一列):

    1aa1bb2aaa2bbb2ccc

  3. 澳门太阳娱乐集团官网 3

    听闻那样的思绪, 现在要对富有不一样的ID的value举行联合,希望获得如下的结果集:

    id value
    —————
    1 aa,bb
    2 aaa,bbb,ccc

  4.  select value+',' from tb where ID=1 for xml path('')  
    那样就能够赢得 "aa,bb,"

  5.  select id,valuelist=stuff((select ','+value from tb as b where b.ID=a.ID for xml path('')),1,1,'')   //注意这一个Stuff函数的交替,因为select后跟的是',' 所以要把这一个‘,’ 替换掉
        from tb as a   
        group by id

 

 

SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby  正是来去掉逗号

 

本文由澳门太阳娱乐集团官网发布于数据库,转载请注明出处:【澳门太阳娱乐集团官网】for xml path以及sql合并

上一篇:mssql sqlserver 将字段null(空值)值替换为钦点值的二 下一篇:没有了
猜你喜欢
热门排行
精彩图文