Jak wykonać wyszukiwanie IN w SQL za pomocą Golang?

Czego GoLANG chce dla drugiego parametru w tym zapytaniu SQL? Próbuję użyć wyszukiwania IN w postgres

stmt, err := db.Prepare("SELECT * FROM awesome_table WHERE id= $1 AND other_field IN $2")
rows, err := stmt.Query(10, ???)

Czego oczekuje:

SELECT * FROM awesome_table WHERE id=10 AND other_field IN (this, that);

1 odpowiedź

Kwerenda wymaga po prostu varargs, aby zastąpić parametry w sql, więc w twoim przykładzie po prostu zrób :

rows, err := stmt.Query(10)

powiedzmy, że ten i drugi przykład byłyby dynamiczne, wtedy musiałbyś zrobić to w ten sposób:

stmt, err := db.Prepare("SELECT * FROM awesome_table WHERE id=$1 AND other_field IN ($2, $3)")
rows, err := stmt.Query(10,"this","that")

Jeśli masz zmienne argumenty dla części „IN”, możesz to zrobić tak:

package main

import "fmt"
import "strings"

func main() {
    stuff := []interface{}{"this", "that", "otherthing"}
    sql := "select * from foo where id=? and name in (?" + strings.Repeat(",?", len(stuff)-1) + ")"
    fmt.Println("SQL:", sql)
    args := []interface{}{10}
    args = append(args, stuff...)    fakeExec(args...)

}

func fakeExec(args ...interface{}) {
    fmt.Println("Got:", args)

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.