Like查询通配符转义
业务上做的查询逻辑,通常会根据某个业务字段进行模糊搜索。但是对于 “_” 、“%” 字符进行模糊搜索时,会搜出全部数据。
这是因为在关系型数据库的like语句中,百分号、下划线都是通配符。
- %:代表任意多个字符
- _:代表一个字符
golang程序用xorm构建like查询的时候,得处理以上通配符的情况,测试人员也会特别测试"_"、"%"做为查询条件的情况。对"_" 要进行转义操作,改为"\_"。
if scenery != "" {
scenery = strings.ReplaceAll(scenery, "%", "\\%")
scenery = strings.ReplaceAll(scenery, "_", "\\_")
session.And(builder.Like{"scenery", scenery})
}