[英]Set variable value 0 if select query returns NULL
我有下面的代碼來從表中獲取一列的總和。
dim sumX as new oledbcommand
sumX.commandtext = "Select sum(Xcolumn) from [Xtable] where id = "1234""
sumX.commandtype = commandtype.text
sumX.connection = con
Dim z as oledbdatareader = sumX.executereader
If z.read then
y = z.getvalue(0)
End if
上面的代碼有效。 我想知道如果上面的代碼沒有得到任何值(空),如果查詢結果為空,如何將y的值設置為零?
嘗試將查詢更改為此:
Select IIf(sum(Xcolumn) Is Null,0,sum(Xcolumn)) from [Xtable] where id = "1234"
或這一個:
Select Nz(sum(Xcolumn), 0) from [Xtable] where id = "1234"
訪問中有一個IIF函數,最好在查詢中將其設置為0。
看看是否有幫助
我只是簡化了代碼以提高性能。與Count()
或Sum()
等聚合函數一起使用非常有用。與ExecuteReader()
, ExecuteScalar()
使用的系統資源更少
Dim sumX As New OleDbCommand
sumX.CommandText = "Select sum(Xcolumn) from [Xtable] where id = 1234"
sumX.CommandType = CommandType.Text
sumX.Connection = con
y = IIf(IsDBNull(sumX.ExecuteScalar), 0, sumX.ExecuteScalar)
SqlCommand對象中的ExecuteScalar()用於在執行數據庫后從數據庫獲取單個值。 它執行SQL語句或存儲過程,並在結果集中第一行的第一列返回標量值。 如果結果集包含多個列或多行,則僅占據第一行的第一列,所有其他值將被忽略。 如果結果集為空,則將返回Null引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.