- 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.使用游标:
游标不是一个很好的方法,不建议只用.
可把上面的代码封装为用户定义函数,或存储过程以方便使用.