2017-10-15 19 views
0

我有这样的代码:如果赋值返回null,是否有办法强制变量为0?

var btns = "(BTNACOUNT + BTNBCOUNT + BTNCCOUNT + BTNDCOUNT)"; 
int abc = db2.ExecuteScalar<int>("SELECT " + btns + " FROM CLICKHISTORY WHERE YYMMDD = " + yymmdd); 

右侧的查询将返回一个数字或空。

如果在右侧返回null,是否有一种方法将abc的值设置为0?

+0

包装你的SQL语句作为替代@ hnegfatl是正确的答案,你可以使用'COALESCE做到这一点已经在SQL((BTNACOUNT + BTNBCOUNT + BTNCCOUNT + BTNDCOUNT ),0)' –

+1

请记住,如果任何* BTNACOUNT,BTNBCOUNT,BTNCCOUNT,BTNDCOUNT都是NULL,那么总和也是一样。从这些列的名称来看,我得到的印象不是你想要的,你想将(1,2,3,NULL)加到6。这是正确的吗? – hvd

回答

0

的ExecuteScalar返回DBNull代替null, 你可以检查,如果ABC是DBNull并将其值设置;

if(abs is DBNull) 
abc=0; 

替代,你可以用select isnull((original statement...),0)

int abc = db2.ExecuteScalar<int>("select isnull((SELECT " + btns + " FROM CLICKHISTORY WHERE YYMMDD = " + yymmdd),0)"); 
相关问题