为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Go 中的 Postgres 获取 NULL 布尔值?

如何从 Go 中的 Postgres 获取 NULL 布尔值?

Go
慕盖茨4494581 2021-08-30 16:33:48
Go 的 bool 类型的零值是false. Postgres 支持未定义的 BOOL 类型,表示为 NULL。这会导致在 Go 中尝试从 Postgres 获取 BOOL 值时出现问题:rows,err := db.Query("SELECT UNNEST('{TRUE,FALSE,NULL}'::BOOL[])");if err != nil {    log.Fatal(err)}for rows.Next() {    var value bool    if err := rows.Scan(&value); err != nil {        log.Fatal(err)    }    fmt.Printf("Value: %t\n",value);}输出:Value: true  Value: false  2014/11/17 09:34:26 sql: Scan error on column index 0: sql/driver: couldn't convert <nil> (<nil>) into type bool解决这个问题最惯用的方法是什么?我想象的两种解决方案都不是很有吸引力:不要使用 Go 的bool类型。相反,我可能会使用一个字符串,并进行我自己的转换,这说明nil始终通过使用COALESCE()或其他方式确保 Postgres 中的 BOOL 为 TRUE 或 FALSE 。
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信