有时候需要一些条件查询操作,比如查询某字段出现在字符串数组集合中的所有记录,则需要进行where in条件查询,有两种方式可以实现go语言中的where in查询
第一种方式:
将字符串数组转换为接口类型数组,[]string --> []interface{}
str := []string{"aaa","bbb","ccc","ddd"}
sql := "select * from table_name where columes in ("
params := make([]interface{},0)
for i=0;i<len(str)-1;i++{
sql += "?,"
params = append(params,str[i])
}
sql += "?)"//sql=select * from table_name where columes in (?,?,?...)
params = append(params,str[len(str)-1])
rows,err := db.Query(sql,params...)
当使用xorm框架进行数据库操作时,则where in的查询方式为
str := []string{"aaa","bbb","ccc","ddd"}
sql := "select * from table_name where columes in ("
params := make([]interface{},0)
for i=0;i<len(str)-1;i++{
sql += "?,"
params = append(params,str[i])
}
sql += "?)"//sql=select * from table_name where columes in (?,?,?...)
params = append(params,str[len(str)-1])
err := engine.Where(querystr,params...).Find(&value,&search)
第二种方式:
字符串数组在where in参数中的格式为(‘aaa’,‘bbb’,‘ccc’),字符串必须用单引号’ '括起来
str := []string{"aaa","bbb","ccc","ddd"}
sql := "select * from table_name where columes in ('%s')"
//params = aaa','bbb','ccc','ddd
params := strings.Join(str,"','")
//sql=select * from table_name where columes in ('aaa','bbb','ccc','ddd')
sql = fmt.Sprintf(sql,params)
rows,err := db.Query(sql)
当使用xorm框架进行数据库操作时,则where in的查询方式为
str := []string{"aaa","bbb","ccc","ddd"}
sql := "select * from table_name where columes in ('%s')"
//params = aaa','bbb','ccc','ddd
params := strings.Join(str,"','")
//sql=select * from table_name where columes in ('aaa','bbb','ccc','ddd')
sql = fmt.Sprintf(sql,params)
err := engine.Where(querystr).Find(&value,&search)