日期:2014-05-18 浏览次数:20578 次
问题描述: 无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以,当我们在处理下列要求时,会比较麻烦: 有表tb, 如下: id value ----- ------ 1 aa 1 bbe
------解决方案--------------------
或用
declare @s nvarchar(max)
select @s=isnull(@s+';','')+user+':'+phone from table
print @s
------解决方案--------------------
DECLARE @TB TABLE([user] VARCHAR(2), phone VARCHAR(15)) INSERT @TB SELECT 'a', '123456a' UNION ALL SELECT 'b', '123456b' UNION ALL SELECT 'c', '123456c' DECLARE @SQL VARCHAR(100) SET @SQL='' SELECT @SQL=@SQL+[user]+':'+phone FROM @TB SELECT @SQL /* a:123456ab:123456bc:123456c (1 row(s) affected) */
------解决方案--------------------
把所有的行,循环一下。
这样写
declare @sql varchar(8000)
set @sql=''
declare @id varchar(50)
set @id=''
declare @name varchar(50)
set @name=''
while @a>0 ---或用游标,自己看着办
begin
--得到@id @name
@sql=@sql+','+cast(@id as varchar(50))+','+@name
--设置@a的值
end
if len(@sql)>0
begin
set @sql=right(1,len(@sql)-1)
exec('select '+@sql)
end