我在这里看到了一个非常相似的问题,但我不确定管道在命令中做了什么,而且它对我来说无论如何都不起作用。所以,这是我尝试过的代码。rows, err := db.Query(fmt.Sprintf("SELECT * FROM mytable WHERE mycolumn LIKE 'camel.%'"))即使,我不知道它是做什么用的,我也尝试过使用管道。rows, err := db.Query(fmt.Sprintf("SELECT * FROM mytable WHERE mycolumn LIKE 'camel. || %'"))所以,它应该做的是匹配该列中以骆驼开头的任何内容,所以 camel.*我得到的两个例子的错误是pq: syntax error at or near "("所以我猜出于某种原因,它传递的命令比我想要的更多……也许是引用问题?我尝试了其他一些事情,但没有任何效果。任何帮助表示赞赏。
3 回答
米脂
TA贡献1836条经验 获得超3个赞
func Sprintf(format string, a ...interface{}) 字符串
Sprintf 根据格式说明符格式化并返回结果字符串。
mt.Println(fmt.Sprintf("SELECT * FROM mytable WHERE mycolumn LIKE 'camel%'"))
//Output:
//SELECT * FROM mytable WHERE mycolumn LIKE 'camel%!'(MISSING)
//Ofc postgres will complain
fmt.Sprintf在这种情况下您不需要。
rows, err := db.Query("SELECT * FROM mytable WHERE mycolumn LIKE 'camel.%'")
工作正常。
但是如果你真的需要使用fmt.Sprintf你必须用 '%%' 转义 '%'
rows, err := db.Query(fmt.Sprintf("SELECT * FROM mytable WHERE mycolumn LIKE 'camel.%%'"))
弑天下
TA贡献1818条经验 获得超8个赞
为了安全起见,您应该使用准备好的语句使用查询,您可以使用 CONCAT 进行连接:
rows, err := db.Query("SELECT * FROM mytable WHERE mycolumn LIKE CONCAT(?, '%')", camel)
希望能帮助到你!
- 3 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消