Golang SQL扫描结构奇怪

时间:2017-10-25 15:53:36

标签: sql go struct

请想象一下这样的表:

FirstName, LastName, Fee, Opt_Out
String     String    Int   TinyInt(4)

这样的结构:

type Dude struct {
    Firstname string
    Lastname  string
    Fee       int
    Opt_out   int
}

保持简短:我使用数据库/ sql扫描结构没有任何问题,除非涉及到TinyInt。

err = rows.Scan(&firstname, &lastname, &fee, &opt_out)

扫描之后,在为我的结构赋值之前,我

fmt.PrintLn(Opt_out)

并且它们总是返回零值。 如果我将查询直接插入sql server,我会得到正确的,并且我期待的是零。

我也尝试更改" Opt_out"在struct to string中,并试图通过执行

来通过查询本身进行转换
IF(Opt_out=1,"yes","no") 

并发生类似的事情,在sql中运行的查询返回预期结果,但golang返回空值。

我正在画一个空白。有任何想法吗?

1 个答案:

答案 0 :(得分:3)

哎呀。好吧,这显然与tinyint本身无关。

数据库中的“费用”列中包含空值,预先存在的查询设置为使用空字符串替换null。

IFNULL(fee,'')

似乎sql驱动程序在看到它们时非常安静地“破坏”,然后放弃了处理所有内容。

我的修复是用IFNULL修改查询(费用,0),一切都恢复了生机。

谢谢RayfenWindspear!如果没有您的反馈,我不会给它额外的努力。