我正在使用VS2005 C#和SQL2005。
我想从多个列中检索数据并合并它们,用逗号分隔它们。
E.g。我的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和Mun提供的方法,但是如果Role列中的数据为空,我想删除逗号。
现在的情况是,如果Role 2和Role 3为空,Roles
列将如下所示:
USER,,
我是否知道如何将,
分组到变量中,以便在值为空时不会显示?
答案 0 :(得分:2)
您应该在存储过程中执行此操作,然后将GridView绑定到该存储过程:
SELECT No., Username, CAST(Role1 AS varchar(1024)+ ', ' + Role2 + ', ' + Role3)
答案 1 :(得分:1)
这是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
}