使用Go SQL在IN条件占位符中传递数组的数组

时间:2018-07-26 09:34:43

标签: go pq

简介

当我尝试在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替换查询中的内容,但我宁愿避免。如果可以的话,这是来自数据库的数据,没有任何用户输入,因此这里没有注入的选择。

谢谢您的时间

0 个答案:

没有答案