介绍
当我尝试在 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))
完美无瑕,但当我尝试它时却没有
我试过的
唯一让我有所收获的是使用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 ,但我宁愿避免。如果这很好,这是来自数据库的数据,在任何地方都没有用户输入,这里没有注入的选项。
感谢您的时间