当前位置: 代码迷 >> ASP.NET >> 高分。麻烦给指点下
  详细解决方案

高分。麻烦给指点下

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

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

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
  相关解决方案