C# 如何获取列中值的数量?

C# 如何获取列中值的数量?,c#,sql,C#,Sql,我有一张叫tbl_公司的桌子。它有田野 id comp_name followers 1 abc 15,23,88,99 2 bbc 1,10,66 在followers字段中,我保存跟踪该公司的员工的id。这个很好用。在每个公司页面的代码隐藏中,我想显示有多少追随者 我想展示abc公司页面中的示例 以下人数为4人 bbc公司页面中的示例我想展示 以下人数为3人 像这样我想显示。我如何才能得到这个计数 谢谢这是TSQL版本 在MySQL

我有一张叫tbl_公司的桌子。它有田野

id  comp_name     followers
 1    abc         15,23,88,99
 2    bbc         1,10,66
在followers字段中,我保存跟踪该公司的员工的id。这个很好用。在每个公司页面的代码隐藏中,我想显示有多少追随者

我想展示abc公司页面中的示例

以下人数为4人

bbc公司页面中的示例我想展示

以下人数为3人

像这样我想显示。我如何才能得到这个计数

谢谢

这是TSQL版本

在MySQL中


数据库字段中以逗号分隔的列表很难处理,而且通常是一个非常糟糕的主意。主要原因是它完全取消了首先使用关系数据库的理由,例如索引、外键和联接

您应该规范化数据库,这样您就可以:

tbl_company -------------- id comp_name 1 abc 2 bbc
如果您完全被这个模式所困扰,您应该首先向编写它的人投诉(如果可能的话),然后最简单的解决方案是返回整个该死的字符串,用C计算逗号,当然加1。

这不是一个好的数据库设计。使用这种表结构必须三思而后行。这可以进一步规范化。如果在开始时没有正确执行此操作,可能会在以后导致问题,并且无法扩展。因此,如果您可以更改表结构,那就更好了

使用新的表结构,数据如下所示

公司表:

id     comp_name
1      abc
2      bbc
公司跟踪表:

company_id     follower
1              15
1              23
1              88
1              99
2              1
2              10
2              66
那么您对结果的查询是

SELECT COUNT(company_id)
  FROM company_follower
  WHERE company_id = @company_id;

提问时,请花时间和精力正确拼写单词。如果您需要遵守此设计,@JW。已经给出了解决方案。然而,我更喜欢在这个阶段采用新的设计。虽然已经插入了数千行,但这不是什么大问题。您可以编写sql语句将这些数据移动到新表中。这只是由于数据库设计不好而出现的一个小问题。您将遇到更新删除问题和可扩展性问题。因此,改变数据库结构是最好的补救办法。参考这就解释了。先生,根据上面我写的查询选择Id,company,CASE当CHAR_LENGTHfollowers>0,然后CHAR_LENGTHfollowers-CHAR_LENGTHREPLACEfollowers,,,,+1,否则0作为company_followers的FollowerCount结束,但它显示以下错误。我使用的sql server 2008错误消息是Msg 195,级别15,状态10,第3行“CHAR_LENGTH”不是可识别的内置函数名。Microsoft sql server 2008错误消息是Msg 195,级别15,状态10,第3行“CHAR_LENGTH”不是可识别的内置函数名。因为您正在执行的查询是针对MySQL的。对于SQL Server,选择Id、company、CASE WHEN LENfollowers>0,然后选择LENfollowers-lenreplacetfollowers、“,”、+1,否则0将作为FollowerCount FROM company_followers结束
SELECT COUNT(1)
FROM company_followers
WHERE company_id = @company_id
id     comp_name
1      abc
2      bbc
company_id     follower
1              15
1              23
1              88
1              99
2              1
2              10
2              66
SELECT COUNT(company_id)
  FROM company_follower
  WHERE company_id = @company_id;