2017-10-15 59 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)"); 
相關問題