当我尝试在IN条件下传递几个值时遇到问题。当我在postgres控制台中尝试查询时,它工作正常,但在go中执行时失败。
我尝试执行的查询具有以下形式:
select *
from someTable
where (someTable.colA, someTable.colB) in ($1)
在控制台中尝试
select *
from someTable
where (someTable.colA, someTable.colB) in ((val1a, val1b), (val2a, val2b))
可以正常工作,但是当我在fo中尝试时却不能
使我到位的唯一方法是使用pq.Array
。
query := "select * from someTable where (someTable.colA, someTable.colB) in ($1)"
pgDb.Query(query, pq.Array([][]interface{}{{"030043B", 49}, {"030002B", 49}}))
我收到的错误是法文,但经过粗略翻译后,很可能对应于input of composite type columns is not implemented
(原始消息l'ajout de colonnes ayant un type composé n'est pas implémenté
)。
我能做的最后一个解决方案是用我的参数手动str替换查询中的内容,但我宁愿避免。如果可以的话,这是来自数据库的数据,没有任何用户输入,因此这里没有注入的选择。
谢谢您的时间