亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我在 golang 中的 Postgres 查詢出了什么問題(LIKE 匹配)

我在 golang 中的 Postgres 查詢出了什么問題(LIKE 匹配)

Go
開滿天機 2022-01-17 10:37:13
我在這里看到了一個非常相似的問題,但我不確定管道在命令中做了什么,而且它對我來說無論如何都不起作用。所以,這是我嘗試過的代碼。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.%%'"))


查看完整回答
反對 回復 2022-01-17
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

為了安全起見,您應該使用準備好的語句使用查詢,您可以使用 CONCAT 進行連接:

rows, err := db.Query("SELECT * FROM mytable WHERE mycolumn LIKE CONCAT(?, '%')", camel)

希望能幫助到你!


查看完整回答
反對 回復 2022-01-17
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

你可以使用 LIKE '%' || camel. || '%'


查看完整回答
反對 回復 2022-01-17
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號