具有浮点值的 Golang 查询无法正常工作

标签 go

我正在对 postgres 数据库执行 Golang 查询,奇怪的是查询仅在我硬编码值时有效,例如此查询有效

db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
p.id) WHERE s.latitudes >=28.1036 AND shared = false order by id desc limit 15)t").Scan(&result)

我现在唯一改变的部分是 WHERE s.latitudes >=28.1036 我没有将该值硬编码,而是通过表单传递它,现在有了这样的查询

   db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
    p.id) WHERE s.latitudes>=$1 AND shared = false order by id desc limit 15)t",LatMin).Scan(&result)

现在查询返回 null,我确实知道 LatMin 变量被正确填充,因为这是我的代码

    func Auto_Location(w http.ResponseWriter, r *http.Request) {

        var result string
        if r.Method == "GET" {

        } else {
            r.ParseForm() }

        LatMin := r.Form["LatMin"]

    db,err := sql.Open("Postgres Connects")
    if err != nil {
    log.Fatal(err)
    println(err)

    }
   db.QueryRow("select json_build_object('Streams', array_to_json(array_agg(t))) from (select p.name FROM profiles as p INNER JOIN streams as s ON(s.profile_id = 
        p.id) WHERE s.latitudes>=$1 AND shared = false order by id desc limit 15)t",LatMin).Scan(&result)
    defer db.Close()


    w.Header().Set("Content-Type", "application/json")


    fmt.Fprintf(w,result)
        fmt.Println("Value:", LatMin)

    }

同样,正如您从代码中看到的那样,我正在使用 FMT,而 LatMin 的正确值为 28.1036库/pq" 。我认为这是浮点值的问题,因为如果我将 LatMin 更改为 28 它会起作用,但 28.1036 不会

最佳答案

大家好,我已经找到答案了,如果您正在收集有关 Post 的表单信息,并且如果某些值是 decimal、float 或 double 类型,并且您想将该值查询到数据库中,那么请使用

r.FormValue("LatMin")

代替

r.Form["LatMin"]

因为这样会得到正确的结果

这两种方法都获得了正确的值,但是 Form[""] 是数据库的问题。

关于具有浮点值的 Golang 查询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38173222/

相关文章:

Golang 运算符 &^ 工作细节

pointers - 如何获取接口(interface){}的指针来类型检查接口(interface)实现

XML 通过字段名称中的索引解码动态响应

ruby - Go 加密不同于使用相同 key 和 iv 的 Ruby 加密

xml - 一个简单的 xml 元素如何解码为 golang 结构?

macos - 是否可以通过指定语义版本通过Homebrew在Mac OS X上安装golang?

Golang 与 Hoare 的 CSP-Language 的主要区别

go - 如何让 golint 在 VS Code 上按类型运行而不是在保存时运行?

go - 如何在 Go 中安装需求? "cannot find package"

go - 当(HTTP)通过将 io.Reader 从 os.Open 传递到 http.Post 来发布本地文件时,Content-Length 为零