如果查询返回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();
}
答案 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的第一个表达式的当前值。