首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多列中检索数据并在单个列中显示

问从多列中检索数据并在单个列中显示
EN

Stack Overflow用户
提问于 2012-01-06 01:57:56
回答 2查看 2.6K关注 0票数 2

我用的是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,,

我可以知道如何将,分组到变量中,这样如果值为空,它就不会显示?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-06 01:59:33

下面是SQL查询:

代码语言:javascript
复制
select
    username,
    isnull(nullif([role 1], '') + ', ', '') + 
    isnull(nullif([role 2], '') + ', ', '') + 
    isnull(nullif([role 3], ''), '') as Roles
from UserData

然后,对于网格视图代码:

代码语言:javascript
复制
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
}
票数 1
EN

Stack Overflow用户

发布于 2012-01-06 02:07:10

您应该在存储过程中这样做,然后将GridView绑定到该存储过程:

代码语言:javascript
复制
SELECT No., Username, CAST(Role1 AS varchar(1024)+ ', ' + Role2 + ', ' + Role3)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8752505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档