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

时间:2016-07-03 18:45:26

标签: 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,这里有一些我不知道的东西..我使用的postgres包是 _“github.com/ lib / pq“。我认为这是浮点值的问题,因为如果我将LatMin更改为28它可以工作,但28.1036不会

1 个答案:

答案 0 :(得分:0)

大家好我已找到答案,如果您正在收集帖子上的表单信息,如果某些值是decimal,float或double类型,并且您想要将该值查询到数据库中,请使用

r.FormValue("LatMin")

而不是

r.Form["LatMin"]

因为这将获得更正

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