如何解决在go sqlx的where子句中检查参数是否为null
鉴于我们在Postgresql数据库中有一条记录,如下所示:
name(varchar) nickname(nullable varchar)
John null
我们要基于可空昵称值更新该记录,如下所示:
type Contact struct {
Name string `db:"name"`
Nickname sql.NullString `db:"nickname"`
}
func update() {
db,_ := sqlx.Connect("postgres","connection_string")
c := Contact{
Name: "Doe",}
q := "UPDATE contact SET name = :name WHERE :nickname = '' AND nickname is null OR nickname = :nickname"
db.NamedExec(db.Rebind(q),c)
}
仅当c.Nickname
是字符串值(假设数据库中有匹配的记录)时,上面的查询才会更新记录。 如何实现这种逻辑:如果c.Nickname == nil
使用nickname is null
,否则使用nickname = c.Nickname
?
编辑:
我尝试了此查询UPDATE contact SET name = :name WHERE CAST(:nickname as varchar) is null AND nickname is null OR nickname = :nickname
,它按预期运行,但仍想查看是否有更好的选择
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。