gpt4 book ai didi

C# SqlDataReader 只返回值 > 0

转载 作者:行者123 更新时间:2023-11-30 22:39:51 25 4
gpt4 key购买 nike

这几个小时以来一直困扰着我,我似乎找不到答案..

我有以下查询

SELECT        A, SUM(B) AS total
FROM table
GROUP BY A

现在表中的B列只能容纳0或1。A是total1,total2或total3

现在,当我直接在 SQL 数据库中使用它时,我得到了一个很好的表

A        total
total1 1
total2 0
toatl3 5

这正是我想要它做的。但是,如果在我的 c# 程序中使用。如果其中一个总数为 0,则根本不显示。下面是我正在使用的代码,但只有当 total1、total2 和 total3 大于 0 时它才能正常工作所以上面的表格只会显示 total1 和 total3...

string total = "A        total";       
SqlConnection conn = new SqlConnection("connection string goes here I know");
try
{
conn.Open();
SqlCommand total = new SqlCommand(
"SELECT A, SUM(B) AS total FROM table GROUP BY A", conn);

SqlDataReader total_reader = total.ExecuteReader();
while (total_reader.Read())
{
total += total_reader["A"].ToString() + " " + total_reader["total"] + "\n";
}
}
catch (Exception err)
{
serverstats += err.ToString();
}
finally
{
conn.Close();
}

即使 total1、total2 和 total3 为 0,我怎样才能正确显示表格

因此显示:

A        total
total1 0
total2 0
toatl3 0

我知道 SQL 中的 0 通常等于 null 等。

我怀疑这就是 C# 假定如果值为 0 则它不重要的原因。

我希望我解释得足够正确,感谢您提前提供的任何帮助!

=======编辑======

COALESCE 或 ISNULL 没有区别:(

我假设它与 C# 读取器位有关,而不是在 SQL 查询位中。

正如您在我的示例中看到的那样,SQL 位确实创建了一个包含正确行的表,并且没有将它们写为 NULL。但是 C# 位似乎将其读取为 NULL。

最佳答案

如果 B 列可以有空值,请尝试

SELECT        A, COALESCE(SUM(B),0) AS total
FROM table
GROUP BY A

关于C# SqlDataReader 只返回值 > 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com