【GO】MySQL like % 模糊查询问题,如果想查询的内容是%,该如何做?
这样一个场景:mysql content 字段为 varchar,现在需要通过like查询 content 包含%
的行,代码如图,仅做示例,需要查询的内容可能为前端提交,在GO中有什么方便的方式能让真正被查询的内容%
进行escape以达到查询包含%的行的目的,而不是查出所有行?
问题重点:GO中有什么方便的方式(比如标准库中是否提供了方法)能让真正被查询的内容进行转义,问题中的%
只是举例,MySQL中查询时需要被转移的字符还有哪些?是否有官方文档作为参考?
回复
1个回答

test
2024-07-12
https://github.com/go-gorm/go...
query := escapeLike("%", "%", "%")
...
func escapeLike(left, right, word string) string {
var n int
for i := range word {
if c := word[i]; c == '%' || c == '_' || c == '\\' {
n++
}
}
// No characters to escape.
if n == 0 {
return left + word + right
}
var b strings.Builder
b.Grow(len(word) + n)
for _, c := range word {
if c == '%' || c == '_' || c == '\\' {
b.WriteByte('\\')
}
b.WriteRune(c)
}
return left + b.String() + right
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容