使用 psql 数组将 pq 迁移到 pgx 的问题

问题描述

这是我的旧代码

cardinalPoints := []string{"75101","75110","75112","75115","92062"}
query = `SELECT * FROM  "DataCom_travel" WHERE ((com1 = $1 AND com2 IN ($2)) OR (com1 IN ($2) AND com2 = $1));`
err := db.Select(&dataComTravel,query,"92050",pq.Array(cardinalPoints))

如何用 pgx 做到这一点?

pgx.Array 似乎不起作用。

解决方法

pq.Array 也适用于 pgx。这是因为它所做的只是提供一个 sql.Scanner/driver.Valuer 实现来包装常规的 go slice。这些是通用接口。

如果您不想同时导入 pgx 和 pq,您可以将 pq.Array 和相关代码复制到您的项目中并创建您自己的版本。只要确保 pq 的许可允许这样做。

编辑:另外,只需阅读 this,它说 pgx 直接支持字符串切片映射。所以使用普通的 cardinalPoints 应该可以。