sql >> Database teknologi >  >> RDS >> Mysql

Golang MySQL forespørger om udefineret antal args ved hjælp af IN-operator

Stmt.Query() har en variadisk parameter:

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

Det betyder, at du kan bruge ellipsen ... at sende en udsnitsværdi som værdien af ​​den variadiske parameter, men den udsnit skal være af typen []interface{} , f.eks.:

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

// ...

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

Som et alternativ kan du forudbygge SQL-forespørgslen og udføre uden at sende forespørgselsargumenter. Se for eksempel Gå og IN-klausul i Postgres .




  1. Rails 3 ActiveRecord:UNION

  2. psycopg2 hvordan håndtere TypeError:ikke alle argumenter konverteres under strengformatering

  3. læsning fra MySQL er hurtigere, eller læsning fra en fil er hurtigere?

  4. Hvordan kontrollerer man, om MySQL-tabellen er UTF-8 og har storageEngine InnoDB?