【问题标题】:How can I scan decimal value?如何扫描十进制值?
【发布时间】:2020-12-15 16:40:45
【问题描述】:

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

我有一个名为“Salary”的列,我将其定义为 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)
    }
}

我的数据库连接字符串没有解析时间:

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

【问题讨论】:

    标签: go


    【解决方案1】:

    您应该能够使用NullFloat64 类型(可能为空的float64),如in here

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

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多