我如何在Go中扫描十进制值mysql?

时间:2019-07-13 03:09:29

标签: go

我正在尝试创建一个传递ID的get函数。

我有一个名为“工资”的列,我将其定义为DECIMAL(13,2)

在Go中,我尝试在int,int68,big.Rat中的struct中定义此属性,但是当我进行扫描时,我会收到:

  

2019/07/13 00:05:25 sql:列索引6扫描错误,名称为“ Salary”:   不支持的扫描,存储driver.Value类型[] uint8到类型* big.Rat

我的get函数:

func (app *App) getFuncionary(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    Id, ok := vars["Id"]
    if !ok {
        log.Println("No one id found")
    }

    dbdata := &Funcionary{}
    err := app.Database.QueryRow("SELECT Id,Data,xx,xxy,xxxx,xxxxx,Salario,xxxxxx FROM `funcionarys` WHERE Id = ?", Id).Scan(&dbdata.Id, &dbdata.Data, &xx, &xxy, &xxxx, &dbdata.xxxxx, &dbdata.Salario, &dbdata.xxxxxx)
    if err != nil {
        log.Fatal(err)
    }

    log.Println("You fetched a thing!")
    w.WriteHeader(http.StatusOK)
    if err := json.NewEncoder(w).Encode(dbdata); err != nil {
        panic(err)
    }
}

我的数据库连接字符串没有parsetime:

connectionString := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&collation=utf8mb4_unicode_ci&multiStatements=true", user, password, serverName, dbName)

1 个答案:

答案 0 :(得分:0)

您应该可以使用NullFloat64类型的in here类型(可能为null的float64)

var dec sql.NullFloat64
row.Scan(&dec)