日期:2014-05-17  浏览次数:20757 次

用for xml把几行转为一个字符串
以下语句可以把几行转为一个字符串(示例的表取系统表,每个数据库都有,方便大家测试):
select name from sysusers where sid is not null for xml raw
返回:
<row name="guest"/><row name="dbo"/>

但,想把这结果返回给一个变量,则没有成功:
select * from (
select name from sysusers where sid is not null for xml raw
) t
执行错误:
服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: 'xml' 附近有语法错误。

请问大家一下,这是什么原因?有没有办法把那一串给我的一个变量(MS SQL 2000环境下),例如:
declare @temp as varchar(200)
select @temp=name from (
select name from sysusers where sid is not null for xml raw
) t
print @temp

------解决方案--------------------
几行转换成一个字符串,可以参考这个方法:


declare @s varchar(8000) 
set @s=''
select @s=@s+name+','
from syscolumns
where id=object_id('InsCompany') 

print left(@s,len(@s)-1)