我有一个查询返回一行,其中包含一个包含字符串数组的列(character varying[]):
{http://wp.me/p62MJv-Jc,http://tyrant.click/1LGBoD6}
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法可以直接将其读入Golang切片?例如
var arr []string
for rows.Next() {
rows.Scan(&arr)
fmt.Println(len(arr))
}
Run Code Online (Sandbox Code Playgroud)
生产:
0
Run Code Online (Sandbox Code Playgroud)
Pra*_*sha 12
我认为这应该可以胜任.在sql中使用array_to_json.然后将json-string 解组为golang切片
sql-> select array_to_json(arr) from ....
var arrStr string
var arr []string
for rows.Next() {
rows.Scan(&arrStr)
json.Unmarshal([]byte(arrStr), &arr)
fmt.Println(len(arr))
}
Run Code Online (Sandbox Code Playgroud)
正如Victor在原帖中的评论中提到的那样,这篇文章很好地回答了这个问题pq.Array().
直接从链接中获取:
要将Postgres数组值读入Go切片,请使用:
Run Code Online (Sandbox Code Playgroud)func getTags(db *sql.DB, title string) (tags []string) { // the select query, returning 1 column of array type sel := "SELECT tags FROM posts WHERE title=$1" // wrap the output parameter in pq.Array for receiving into it if err := db.QueryRow(sel, title).Scan(pq.Array(&tags)); err != nil { log.Fatal(err) } return }
我刚刚在我自己的项目中工作,所以可以确认它是有效的.
| 归档时间: |
|
| 查看次数: |
9851 次 |
| 最近记录: |