返回SUM SQL语句,C#,NULL

时间:2016-12-07 16:24:17

标签: c# sql-server

如果查询返回null,则目标是让它返回0,否则返回数字。 SUM语句返回列ConcurrentUsers中列值的总和。

下面的代码会返回一个转换错误:

  

指定的演员表无效。

可能是因为查询返回null并且无法将其转换为int。

以下是尝试。

如果有任何说明,请编辑问题。

SQL查询:

string query = @"SELECT SUM(CAST(ConcurrentUsers AS INT)) 
                 FROM [website].[db]
                 WHERE(ConcurrencyLicensing NOT LIKE 0)";

返回值:

SqlConnection conn = new SqlConnection(entityBuilder.ProviderConnectionString);         
SqlCommand cmd = new SqlCommand(query, conn);

try
{
    conn.Open();
    object userNameObj = cmd.ExecuteScalar();

    if(userNameObj != null)
    {
        int getUserName = (int)userNameObj;
        return getUserName;
    }
    else
    {
        return 0;
    }
}
finally
{
    conn.Close();
}

1 个答案:

答案 0 :(得分:0)

你试过COALESCE吗?

string query = @"SELECT COALESCE(SUM(CAST(ConcurrentUsers AS INT)), 0) FROM [website].[db]
            WHERE(ConcurrencyLicensing NOT LIKE 0)";

https://msdn.microsoft.com/en-us/library/ms190349.aspx

  

按顺序计算参数,并返回最初未计算为NULL的第一个表达式的当前值。