如何将一个字段下的值通过循环的方式赋值给一变量? declare @var1 varchar(100)select @var1 = @var1+ ',' + Col1Nam from Table set @var1 = stuff(@var1,1,1,'')select @var1 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用楼下说的游标的方式我已经实现了,不过MorningTea(一勺抹茶) 你提供的方法:select @var1 = @var1+ ',' + Col1Nam from Table 好像会给@var1赋一个空值吧上面那句话应该先算@var1+','+col1nam 的合并字符串后执行 select语句,那这样返回的行肯定是空的啊,因为表中没有这个字段啊?不知道对不对? 非常抱歉,有点失误,我说的这个只是全部串起来有用create table #s (xx varchar(30))insert into #s values('Catherine Zita-Jones')insert into #s values('Judu Foster')insert into #s values('Will Smith')select * from #s/*xx ------------------------------ Catherine Zita-JonesJudu FosterWill Smith(3 row(s) affected)*/declare @var1 varchar(100)set @var1 =''select @var1 = @var1 + ',' + xx from #s set @var1 = stuff(@var1,1,1,'')select @var1 /* ----------------------------------------------Catherine Zita-Jones,Judu Foster,Will Smith(1 row(s) affected)*/我前面取到为null,因为之前我没有赋值,declare @var1 varchar(100)set @var1 = ''--要加上这句,否则@var1 的初始值为null,那么和其他值运算都为null,所以就是错--误答案,sorry!select @var1 = @var1+ ',' + Col1Nam from Table 如果不是串在一起,请参考http://community.csdn.net/Expert/topic/4186/4186501.xml?temp=.8284265问问题的作者就给了很好的函数,呵呵 如果像楼上说的,用一个UDF来实现行列转化,也是一种方法。不过,如果用户要提取相关字段来用的话,你还要进行一下字符串切分。再者,该字段可能内容可能含有逗号。(所以你还是用一些基本没人用的分隔符吧。例如:○○○等)最后,如果串联出的结果超过8192的字符的话,你那个变量是放不下的。(而且这种情况,在表中的数据上百条时,就很有可能出现)总的来说,如果还是用游标好一点。 请教一菜问题,分析器如何调试有返回值的存储过程 为什么select min() 没有返回最小值 求在mssql里怎么写des解密函数 在XP环境下能安装sql企业版么? 怎样创建一个这样的数据库? [求助]SQL2000和SQL2005同时装在WEB服务器的问题... ▲▲▲ 求知一个SQL语句 在存储过程中,判断一个临时表是否存在,怎样写? 如何实现自动增加的功能(在线等候,答者有分) 触发器的inserted,deleted,updated怎么回事? 请问如何查询某数据库中的索引,约束,相关性,触发器的名称?(sql server2000) 求救
不过
MorningTea(一勺抹茶) 你提供的方法:
select @var1 = @var1+ ',' + Col1Nam from Table
好像会给@var1赋一个空值吧
上面那句话应该先算@var1+','+col1nam 的合并字符串后执行 select语句,那这样
返回的行肯定是空的啊,因为表中没有这个字段啊?不知道对不对?
create table #s (xx varchar(30))
insert into #s values('Catherine Zita-Jones')
insert into #s values('Judu Foster')
insert into #s values('Will Smith')
select * from #s
/*
xx
------------------------------
Catherine Zita-Jones
Judu Foster
Will Smith(3 row(s) affected)
*/declare @var1 varchar(100)
set @var1 =''
select @var1 = @var1 + ',' + xx from #s
set @var1 = stuff(@var1,1,1,'')
select @var1 /*
----------------------------------------------
Catherine Zita-Jones,Judu Foster,Will Smith(1 row(s) affected)
*/我前面取到为null,因为之前我没有赋值,
declare @var1 varchar(100)
set @var1 = ''--要加上这句,否则@var1 的初始值为null,那么和其他值运算都为null,所以就是错--误答案,sorry!
select @var1 = @var1+ ',' + Col1Nam from Table
如果不是串在一起,请参考
http://community.csdn.net/Expert/topic/4186/4186501.xml?temp=.8284265
问问题的作者就给了很好的函数,呵呵
不过,如果用户要提取相关字段来用的话,你还要进行一下字符串切分。
再者,该字段可能内容可能含有逗号。(所以你还是用一些基本没人用的分隔符吧。例如:○○○等)
最后,如果串联出的结果超过8192的字符的话,你那个变量是放不下的。(而且这种情况,在表中的数据上百条时,就很有可能出现)总的来说,如果还是用游标好一点。