我用的是VS2005 C#和SQL2005。
我想从多个列中检索数据,并将它们合并,用逗号分隔它们。
例如,我的SQL表UserData中的数据
No. | Username | Role 1 | Role 2 | Role 3 |
1 | Jimmy | USER | READONLY | WRITE |
我想在我的GridView GridView1中显示数据
No. | Username | Roles |
1 | Jimmy | USER, READONLY, WRITE |
如何使用SELECT语句合并3列中的数据并合并它们,用逗号分隔数据并在GridView中列出它们?
谢谢
编辑
我尝试使用Shark和门提供的方法,但如果角色列中的数据为空,则删除逗号。
现在的情况是,如果角色2和角色3为空,Roles列将如下所示:USER,,
我可以知道如何将,分组到变量中,这样如果值为空,它就不会显示?
发布于 2012-01-06 01:59:33
下面是SQL查询:
select
username,
isnull(nullif([role 1], '') + ', ', '') +
isnull(nullif([role 2], '') + ', ', '') +
isnull(nullif([role 3], ''), '') as Roles
from UserData然后,对于网格视图代码:
SqlConnection conn = new SqlConnection(YourConnectionStringHere);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText =
"select " +
" username, " +
" isnull(nullif([role 1], '') + ', ', '') + " +
" isnull(nullif([role 2], '') + ', ', '') + " +
" isnull(nullif([role 3], ''), '') as Roles " +
"from UserData";
SqlDataAdapter sda = new SqlDataAdapter(cmd);
Datatable YourData = new DataTable();
try
{
sda.Fill(YourData);
GridView1.DataSource = YourData;
GridView1.Bind();
}
catch
{
sda.Dispose();
// handle your error
}发布于 2012-01-06 02:07:10
您应该在存储过程中这样做,然后将GridView绑定到该存储过程:
SELECT No., Username, CAST(Role1 AS varchar(1024)+ ', ' + Role2 + ', ' + Role3)https://stackoverflow.com/questions/8752505
复制相似问题