我在這里看到了一個非常相似的問題,但我不確定管道在命令中做了什么,而且它對我來說無論如何都不起作用。所以,這是我嘗試過的代碼。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 關注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消