C# mysql中SUM()的返回类型是什么?
我正在用C#NET写一个程序 我想收集一个类的总频率(假设每个类都有很多单词,每个单词在相应的类中都有自己的频率) 所以我在mysql中使用了sum()函数。但有一个错误,说我的演员是错误的C# mysql中SUM()的返回类型是什么?,c#,mysql,C#,Mysql,我正在用C#NET写一个程序 我想收集一个类的总频率(假设每个类都有很多单词,每个单词在相应的类中都有自己的频率) 所以我在mysql中使用了sum()函数。但有一个错误,说我的演员是错误的 public void average_each_type() { MySqlDataReader result; int total_freq = 0; string type = "";
public void average_each_type()
{
MySqlDataReader result;
int total_freq = 0;
string type = "";
command.CommandText = "select class_name ,SUM(frequency) as sum_of_freq from training_set group by class_name ";
result = command.ExecuteReader();
while (result.Read())
{
total_freq = (int)result["sum_of_freq"]; //error happened here
type = result["class_name"].ToString();
//.....then so on...//
MySql中的SUM将返回一个十进制或双精度值,具体取决于“frequency”中的类型。从: SUM()和AVG()函数为精确值参数(整数或十进制)返回一个十进制值,为近似值参数(FLOAT或DOUBLE)返回一个双精度值。(在MySQL 5.0.3之前,SUM()和AVG()为所有数值参数返回DOUBLE。) 如果您想要一个整数,则可以使用
Convert
获得一个整数,而不管源类型是什么:
total_freq = Convert.ToInt32(result["sum_of_freq"]);
这里的优点是,无论从数据库返回什么类型的值,只要它是数值类型,它都会工作。除了Reed所说的,您还可以在SQL中执行整数强制转换:
CAST(SUM(frequency) as INT) as sum_of_freq
应与表达式的类型相同;也就是说,数据库中
频率的数据类型。可能的@JoelEtherton重复:不完全是重复。但有些信息可能有用,这是不正确的。无法转换为INT,需要转换为UNSIGNED。看见