问题描述
这是我的旧代码:
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
应该可以。