我正在使用 Go-pg,当我使用以下方式执行 sql 查询时:
db.Query(&result, sqlQuery, params)
Run Code Online (Sandbox Code Playgroud)
params如下所示的结构在哪里:
type MyParams struct {
Codes []int
}
Run Code Online (Sandbox Code Playgroud)
并且sqlQuery是
SELECT id FROM bar WHERE code_id IN (?codes)
Run Code Online (Sandbox Code Playgroud)
在实际的 SQL 查询中,我得到这样的查询:
SELECT id FROM bar WHERE code_id IN ('[7,45]')
Run Code Online (Sandbox Code Playgroud)
是否可以正确传递 int 数组占位符以进行查询:
SELECT id FROM bar WHERE code_id IN (7,45)
Run Code Online (Sandbox Code Playgroud)
您可以做以下几件事:
in (...)和使用pg.In。= any(array)你的SQL,而不是in (list)和pg.Array中转到合适的阵列发送到PostgreSQL。第一个看起来像:
db.Query(&result, `SELECT id FROM bar WHERE code_id IN (?)`, pg.In(params.Codes))
Run Code Online (Sandbox Code Playgroud)
第二个看起来像:
db.Query(&result, `SELECT id FROM bar WHERE code_id = ANY (?)`, pg.Array(params.Codes))
Run Code Online (Sandbox Code Playgroud)