FOR XML 各种用法

http://blog.csdn.net/zhaowenzhong/article/details/6044512

-SQL中FOR XML子句的各种用法
1、AUTO模式:返回数据表为起表名的元素,每一列的值返回为属性; 
SELECT *  FROM tb_test for xml auto
2、RAW模式:返回数据行为元素,每一列的值作为元素的属性; 
SELECT *  FROM tb_test for xml raw('fsf')
3、PATH模式:通过简单的XPath语法来允许用户自定义嵌套的XML结构、元素、属性值 
SELECT *  FROM tb_test for xml path('fsf')
4、EXPLICIT模式:通过SELECT语法定义输出XML的结构

 

----最常用的就是合并字符串 的案例
-----------------以某列为基准,将其他列的内容合并成指定格式(如:q,w,e,r,t)放到一列中
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[tb_test]') 
AND type in (N'U'))

CREATE TABLE tb_test(id int, value varchar(10))
 INSERT tb_test SELECT 1, 'aa'
     UNION ALL SELECT 1, 'bb'
     UNION ALL SELECT 2, 'aaa'
     UNION ALL SELECT 2, 'bbb'
     UNION ALL SELECT 2, 'ccc'
     UNION ALL SELECT 3, 'ddd'
     UNION ALL SELECT 3, 'ddd'

--方法1
SELECT * 
FROM (SELECT DISTINCT id FROM tb_test) A OUTER APPLY(
SELECT value= STUFF(REPLACE(REPLACE(
(
SELECT value FROM tb_test aa
WHERE id = A.id
FOR XML AUTO
), '<N value="', ','), '"/>', ''), 1, 1, '')
)aa
----方法2
SELECT id, value=STUFF((SELECT ','+value FROM tb_test t WHERE id=tb_test.id FOR XML PATH('')), 1, 1, '')
FROM tb_test
GROUP BY id
-----------------以某列为基准,将其他列的内容合并成指定格式(如:q,w,e,r,t)放到一列中


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值