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

高分求助。麻烦给指点下。
如:
我有一个SQL语句:SELECT StuName from StudentTable where Sex = '男'
这样查询出来的结果肯定不是唯一的:
是这样的:
张三
李四
王五
我的问题是如何让这些查询出来的数据返回一个字符串,这种形式:张三,李四,王五
求教了,不知道该怎么写。

------解决方案--------------------
一、得到数据集 然后循环数据集 拼接一个字符串 得到张山,里斯.....。
二、直接在SQL 里面得到要求的字符串。
------解决方案--------------------
参考
------解决方案--------------------
关于第二种 参考
------解决方案--------------------
动态拼接
参考http://topic.csdn.net/u/20090527/23/5c5c3013-b94f-4625-acaa-b721541ecdee.html
------解决方案--------------------

DECLARE sales_rep CURSOR
FOR
SELECT StuName from StudentTable where Sex = '男'

DECLARE @Ref_Value nvarchar(50)


DECLARE @ACT_Value nvarchar(50)


set @Ref_Value=''


set @ACT_Value=''


OPEN sales_rep

/*得到第一条记录,如果失败@@FETCH_STATUS返回-1,如果没有记录@@FETCH_STATUS则返回-2*/
FETCH NEXT FROM sales_rep INTO @Ref_Value
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
Begin
--print '开始'

set @ACT_Value=@ACT_Value+@Ref_Value+','

End
/*读取下一条*/
FETCH NEXT FROM sales_rep INTO @Ref_Value
END
/*关闭游标*/
CLOSE sales_rep
/*释放游标*/
DEALLOCATE sales_rep
select @ACT_Value



------解决方案--------------------
探讨

如何在程序里实现?

------解决方案--------------------
DataTable dt = new DataTable();
string str = string.Join(",", (from temp in dt.AsEnumerable() select new { StuName = temp.Field<string>("StuName ") }).ToArray());

------解决方案--------------------
SQL code

select LEFT(Name,LEN(Name)-1) As Name from (select (select StuName+','  from StudentTable  where Sex ='男' FOR XML PATH('')) As Name) B