当前位置: 首页 > 工具软件 > Go GORM > 使用案例 >

golang gorm 模糊查询

孟新知
2023-12-01

在grom的官方文档中模糊查询给的方案是这样的:

// LIKE
db.Where("name LIKE ?", "%jin%").Find(&users)

但是在实际操作中,我使用了fmt.Sprintf去拼接where里面的查询条件,如下:

Where(fmt.Sprintf(" dns like %%%s ", createDbnameInfo.DNS))

后面的createDbnameInfo.DNS是我数据中的一个变量,但是一运行到这里就一直报sql错误。
接下来就是各种调试,在网上也没有查阅到相关资料,最后发现模糊查询的like后面的数据需要加上单引号,代码如下:

Where(fmt.Sprintf(" dns like '%%%s' ", createDbnameInfo.DNS))

或者使用%q自带单引号转义:

Where(fmt.Sprintf(" dns like %q ", ("%" + createDbnameInfo.DNS)))

注意一定要将模糊查询的%和数据一起放在单引号里面

希望这次踩的坑对其他golang新手有所帮助

 类似资料: