首页 > 解决方案 > 使用 go sql 在 IN 条件占位符中传递数组数组

问题描述

介绍

当我尝试在 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é)。

我能做的最后一个解决方案是用我的参数在查询中手动替换 s​​tr ,但我宁愿避免。如果这很好,这是来自数据库的数据,在任何地方都没有用户输入,这里没有注入的选项。

感谢您的时间

标签: gopq

解决方案


推荐阅读