2015-10-11 53 views
0

我試圖使用GORP庫與MySQL的MySQL NULL值問題

query = "SELECT SUM(outputoctets) FROM monthlyacct where date >= ? AND date < ? AND location = ?" 
count, err := dbMap.SelectInt(query , constrains.From, constrains.To, constrains.LocationId) 

此查詢引發以下錯誤運行下面的查詢,

在列索引0掃描錯誤:轉換字符串\ 「\ u003cnil \ u003e \」 來 一個的Int64:strconv.ParseInt:解析\ 「\ u003cnil \ u003e \」:無效語法

這裏柱outputo ctets是類型BIGINT。我也嘗試將SelectInt更改爲SelectStr,然後拋出以下錯誤;在列索引0

掃描錯誤:不支持的驅動器 - \ u003e掃描對: \ u003cnil \ u003e - \ u003e *串

當我跑沒有位置過濾器的查詢,它的工作。看起來像這是由於位置列中存在一些NULL值。但是,我需要在查詢上有位置過濾器。我該如何解決這個問題?

+0

MySQL爲查詢輸出的內容是什麼? – 0x434D53

+0

它總是一個數字SUM(outputoctets) – Anuruddha

+0

如果沒有匹配的行,則SUM()返回NULL – Mark

回答

0

看起來額外的位置標準正在過濾所有結果,所以sum(outputoctets)爲空。 \u003cnil\u003e是字符串"<nil>",它拒絕爲無效整數。

使用 '可爲空的' 類型保持的總和,例如,NullInt64

可替代地,使用mysql IFNULL功能,以避免從查詢返回一個空值,例如,IFNULL(總和(outputoctets),0)

查看Go database tutorial瞭解更多信息

+0

爲什麼downvote? – Mark