sql >> Databáze >  >> RDS >> Mysql

Golang MySQL dotazuje nedefinované množství argumentů pomocí operátoru IN

Stmt.Query() má variadic parametr:

func (s *Stmt) Query(args ...interface{}) (*Rows, error)

To znamená, že můžete použít tři tečky ... předat hodnotu řezu jako hodnotu parametru variadic, ale tento řez musí být typu []interface{} , např.:

var args []interface{}
for _, v := range r.Form["type"] {
    t, _ := strconv.Atoi(v)
    args = append(args, t)
}

// ...

rows, err := stmt.Query(args...)

Alternativně můžete dotaz SQL předem sestavit a spustit bez předávání argumentů dotazu, příklad viz Klauzule Go a IN v Postgres .




  1. Spočítejte počet řádků, které nejsou od sebe vzdáleny více než 10 sekund

  2. Jak uděláte rozšířenou vložku pomocí JDBC bez vytváření řetězců?

  3. dpkg:chyba zpracování balíčku mysql-server (problémy se závislostí)?

  4. SQL LEFT-JOIN na 2 polích pro MySQL