如何从 Golang 的 Postgres 数组中获取切片?

cig*_*ger 2 sql postgresql go

假设我有一个 postgres 查询,如:

SELECT
  id,
ARRAY_AGG(code) AS code
  FROM
    codes
WHERE id = '9252781' 
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)

我的回报看起来像:

 id        |  codes
-----------+-------------
 9252781   | {H01,H02}
Run Code Online (Sandbox Code Playgroud)

这两个idcodesvarchar

在 Golang 中,当我沿着行扫描结果时,它只是冻结。没有错误,什么都没有。

mko*_*iva 5

如果您使用github.com/lib/pqpostgres 驱动程序,您可以使用他们的pq.Array辅助函数来扫描和存储 postgres 数组。

var id string
var arr []string

row := db.QueryRow(`SELECT '9252781', ARRAY['H01','H02']`)
if err := row.Scan(&id, pq.Array(&arr)); err != nil {
    log.Fatal(err)
}

log.Println(id, arr)
// 9252781 [H01 H02]
Run Code Online (Sandbox Code Playgroud)