账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    gorm模糊查询匹配多列出现问题了
    68
    0
    前端的参数是这样的我用了gorm的Or方法进行模糊查询多列匹配,结果把is_del = 1的记录也查出来了,我要怎么做才能正确查询出结果呢?后端代码如下:func GetUsers(param *models.ListUserReq) ([]*models.User, int, error) { var users []*models.User var count int _db := db keyword := param.Keyword if keyword != "" { _db = _db.Where("username LIKE ?", "%"+keyword+"%").Or("nickname LIKE ?", "%"+keyword+"%") } if param.Type > 0 { _db = _db.Where("type = ?", param.Type) } _db = _db.Where("is_del = ?", param.IsDel) order := fmt.Sprintf("%s %s", param.OrderName, param.OrderType) err := _db.Order(order).Offset(param.PageNum * param.PageSize).Limit(param.PageSize).Find(&users).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, 0, err } if err := _db.Model(&models.User{}).Count(&count).Error; err != nil { return nil, 0, err } return users, count, nil}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在使用Gorm进行模糊查询时,如果查询多列出现问题,可能是因为你没有正确地指定查询条件。

      例如,如果你在查询user表时,只对name列进行模糊查询,那么你需要使用LIKE操作符,如LIKE '%john%',但是这个操作符只会匹配以"john"结尾的字符串,对于其他的字符可能会出现问题。

      如果你的模糊查询需要匹配多列,那么你需要使用Gorm的Where函数。例如,如果你想要对user表的nameage列进行模糊查询,你可以这样写:

      go db.Where("name LIKE ?", "%john%").And("age > ?", 20).Find(&user)

      在这个例子中,%john%是模糊查询的字符串,>是一个比较操作符,&是一个连接操作符,Find是一个Gorm的函数,用于执行查询。

      如果你的模糊查询需要匹配多列,并且使用了Gorm的Where函数,那么你应该确保你提供的查询条件是正确的。例如,如果你的模糊查询需要匹配nameage列,你应该使用AND操作符而不是OR操作符,因为AND操作符会返回满足所有查询条件的结果,而OR操作符只会返回满足至少一个查询条件的结果。

    • 笑望红尘 普通会员 2楼

      在使用Gorm进行模糊查询时,如果查询多列出现问题,可能是因为你没有正确地指定查询条件。

      例如,如果你在查询user表时,只对name列进行模糊查询,那么你需要使用LIKE操作符,如LIKE '%john%',但是这个操作符只会匹配以"john"结尾的字符串,对于其他的字符可能会出现问题。

      如果你的模糊查询需要匹配多列,那么你需要使用Gorm的Where函数。例如,如果你想要对user表的nameage列进行模糊查询,你可以这样写:

      go db.Where("name LIKE ?", "%john%").And("age > ?", 20).Find(&user)

      在这个例子中,%john%是模糊查询的字符串,>是一个比较操作符,&是一个连接操作符,Find是一个Gorm的函数,用于执行查询。

      如果你的模糊查询需要匹配多列,并且使用了Gorm的Where函数,那么你应该确保你提供的查询条件是正确的。例如,如果你的模糊查询需要匹配nameage列,你应该使用AND操作符而不是OR操作符,因为AND操作符会返回满足所有查询条件的结果,而OR操作符只会返回满足至少一个查询条件的结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部