sql >> Database >  >> RDS >> Mysql

Golang MySQL die een ongedefinieerd aantal argumenten opvraagt ​​met de IN-operator

Stmt.Query() heeft een variadische parameter:

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

Dit betekent dat u het weglatingsteken ... . kunt gebruiken om een ​​slice-waarde door te geven als de waarde van de variadische parameter, maar die slice moet van het type []interface{} zijn , bijv.:

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

// ...

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

Als alternatief kunt u de SQL-query vooraf samenstellen en uitvoeren zonder queryargumenten door te geven, zie bijvoorbeeld Go en IN-clausule in Postgres .




  1. laravel welsprekende relatie van query builder

  2. Hoe voeg ik een voorloopnul toe aan verschillende tekenlengtes in mysql?

  3. Hoe databasenaam opvragen in Oracle SQL Developer?

  4. MONTHNAME() Voorbeelden – MySQL