我在网上看到了许多在从表中选择值时使用数组的示例。这是我针对 Redshift 运行的查询。
select * from table where colID = ANY(array[1])
当我使用 SQL Workbench 运行此查询时,它运行良好。
我正在尝试使用https://github.com/lib/pq在我的 Go 应用程序中运行相同的查询
db, err := sql.Open("postgres", url)
defer db.Close()
rows, err := db.Query(`select * from table where colID = ANY($1)`, pq.Array([]int{1}))
if nil != err {
pqErr := err.(*pq.Error)
fmt.Println(pqErr.Error())
}
上述代码预计将根据https://godoc.org/github.com/lib/pq#Array工作。
但是输出是错误的。
-----------------------------------------------
error: Assert
code: 1000
context: IsA((Node*)arrayExpr->args->tail->data.ptr_value, Const) -
query: 9574375
location: xen_execute.cpp:6200
process: padbmaster [pid=14680]
-----------------------------------------------
因为错误和行是nil
但是下面的代码有效
rows, err := db.Query(`select * from table where colID = ANY(array[1])`)
谁能解释我为什么会出错?