下面的脚本能把表中某列所有数据合并为一个字符串.下面的脚本在SQL SERVER 2005下写的.该脚本也支持TEXT字段.如果你想在SQL SERVER 2000下是使用,请把VARCHAR(MAX) 替换为 VARCHAR(8000).
示例脚本:
- create table tags(tag varchar(30))
- insert tags
- select 111
- union
- select 222
- union
- select 333
- union
- select 444
- union
- select 555
- 111,222,333,444,555
有三种解决方案:
1.使用COALESCE
- DECLARE @listStr VARCHAR(MAX)
- SELECT @listStr = COALESCE(@listStr+',' , '') + tag
- FROM tags
- SELECT @listStr
2.使用赋值Select语句
- DECLARE @listStr VARCHAR(MAX)
- SET @listStr = ''
- SELECT @listStr = @listStr + tag + ','
- FROM tags
- SELECT SUBSTRING(@listStr , 1, LEN(@listStr)-1)
3.使用游标:
游标不是一个很好的方法,不建议只用.
可把上面的代码封装为用户定义函数,或存储过程以方便使用.