簡體   English   中英

如果選擇查詢返回NULL,則將變量值設置為0

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM