前言
记录一下问题:项目问题中遇到了gorm使用like的时候不起作用
具体问题:我在这里写了两个子查询想要用模糊查询,把字符串用常量抽离出来,但是控制台显示报错,找了半天没有找到原因
const (
place = "场所"
place2 = "场所2"
)
subQueryAuthorityId := global.GSD_DB.Table("sys_authorities").Select("authority_id").Where("authority_name like '%?%' AND authority_name like '%?%'", place, place2)
subQueryUserId := global.GSD_DB.Table("sys_user_authority").Select("sys_user_id AS id").Where("sys_authority_authority_id IN (?)", subQueryAuthorityId)
解决方法如下:
这里占位符需要不能有百分号!!!%%,需要把百分号也抽离出来,要不然在引号里会认为是字符串!!!占位符是单独的。
代码如下
const (
place = "%场所%"
place2 = "%场所2%"
)
subQueryAuthorityId := global.GSD_DB.Table("sys_authorities").Select("authority_id").Where("authority_name like ? AND authority_name like ?", place, place2)
subQueryUserId := global.GSD_DB.Table("sys_user_authority").Select("sys_user_id AS id").Where("sys_authority_authority_id IN (?)", subQueryAuthorityId)