Можно создать строку с разделителем, необходимым для создания строки, а затем передать ее в db.query
для получения результата.
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
a := []int{7,45,32}
str := ConvertToString(a, ",")
query := `Select * from table1 where ID IN(`+ str +`)`
fmt.Println(query)
}
func ConvertToString(a []int, delim string) string{
var b string
for _, v := range a{
b += strconv.Itoa(v)
b += ","
}
return strings.Trim(b,",")
}
Рабочий код на Детская площадка .
Отредактировано : -
Вы можете использовать Golang sqlx пакет для вашего требования.
database/sql
пакет не проверяет ваш запрос и передает ваш
аргументы непосредственно к драйверу, это делает работу с запросами с
В пунктах сложно:
SELECT * FROM users WHERE level IN (?);
Когда это будет подготовлено как утверждение на бэкэнде, bindvar?
будет соответствовать только одному аргументу, но то, что часто желательно
для этого, чтобы быть переменным числом аргументов в зависимости от
длина некоторого среза, например:
var levels = []int{4, 6, 7}
rows, err := db.Query("SELECT * FROM users WHERE level IN (?);", levels)