SQL Server中串联多行数据的同一个字段的内容

在使用SQL Server开发系统时候经常会遇到这么一种情况:
要把多行数据记录中的某个相同字段合并成一个字段,如下
表 table:
-------------
col1  col2
-------------
1         a
2         b
3         c
4         d


现在要把表中的col2字段中的数据合并成一个类似于‘a;b;c;d’这样的字段,该怎么做呢?


我们很自然可以想到先把每一条记录查出来,然后再进行拼装,但是,这样子做起来太麻烦了,
而且如果有很多的记录或者是记录数不定,那这种方法就基本上没用了,幸好,在SQL Server中,
一些自带的函数方法可以帮我们很好地做到这一点,而且十分简单,如下示:


stuff((select DISTINCT ';'+col2 from table for xml path('')),1,1,'')


这样子就可以得到我们想要的结果‘a;b;c;d’


在这里 for xml path('')的作用是把多行数据内容串联起来成为一个数据,SQL Server 2005以后的版本支持
通过这个方法就可以得到数据‘;a;b;c;d’,但这样子得到的数据前面就多了一个分号了,不要紧,使用stuff函数就可以把数据最前面的分号给去掉,得到最终的结果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值