我正在try 使用golang将数据插入mysql数据库.在我的值为空字符串的情况下,我希望插入null.如何调整以下内容以插入空字符串而不是空字符串?谢谢

_, err := m.Db.Exec(`INSERT INTO 
                         visitor_events
                         (type, 
                          info, 
                          url_path, 
                          visitor_id, 
                          created_at, 
                          domain)
                          VALUES
                          (?, ?, ?, ?, ?, ?)`,
                          m.SaveEventType(ve), ve.EventInfo, m.SaveURLPath(ve.UrlPath), ve.VisitorId, time.Now().UTC(), ve.Domain)

推荐答案

在我的代码中,我有一个将字符串转换为sql.NullString的函数

func NewNullString(s string) sql.NullString {
    if len(s) == 0 {
        return sql.NullString{}
    }
    return sql.NullString{
         String: s,
         Valid: true,
    }
}

然后,每当我使用Exec时,我都会用NewNullString函数将数据库中可能为NULL的字符串包装起来.

db.Exec(`
  insert into
      users first_name, last_name, email
      values (?,?,?)`,
  firstName,
  lastName,
  NewNullString(email),
)

Go相关问答推荐

Golang测试容器,无法使网络正常工作

通过渠道和goroutines增值1000倍

可以';t从主机连接到ScyllaDB容器

通过代理从golang连接到ftp

如何在出现错误时停止从通道读取?

如何在 Go msgraph-sdk-go 中转发消息并包括抄送和/或密送收件人?

如何用mpb创建两行进度条?

GoLang:net.LookupHost 返回重复的 ips

Golang:隐式 struct 匹配

Golang泛型在用作 map 元素时不起作用

Go:等待多个通道的性能损失

Golang Echo Labstack 如何在模板视图中调用函数/方法

Grafana/Prometheus 将多个 ip 可视化为查询

使用 bolthold 3 条件进行 boltDB 查询

在 Go 中将十六进制转换为带符号的 Int

将 Simple Go Web 应用程序部署到 Elastic Beanstalk

Go 赋值涉及到自定义类型的指针

从 map 返回空数组而不是空字符串数组

如何使用 httputil.ReverseProxy 设置 X-Forwarded-For

Golang 查询扫描未将查询正确扫描到 struct 中