Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 检查go sqlx的where子句中的参数是否为null_Postgresql_Go_Sqlx - Fatal编程技术网

Postgresql 检查go sqlx的where子句中的参数是否为null

Postgresql 检查go sqlx的where子句中的参数是否为null,postgresql,go,sqlx,Postgresql,Go,Sqlx,鉴于我们在postgresql数据库中有如下记录: name(varchar) nickname(nullable varchar) John null 我们希望根据可为空的昵称值更新该记录,如下所示: name(varchar) nickname(nullable varchar) John null 类型联系人结构{ 名称字符串`db:“名称”` 昵称sql.NullString`db:“昵称”` } func update(){ db,u:=sqlx

鉴于我们在postgresql数据库中有如下记录:

name(varchar) nickname(nullable varchar)
John          null
我们希望根据可为空的昵称值更新该记录,如下所示:

name(varchar) nickname(nullable varchar)
John          null
类型联系人结构{
名称字符串`db:“名称”`
昵称sql.NullString`db:“昵称”`
}
func update(){
db,u:=sqlx.Connect(“postgres”,“connection\u字符串”)
c:=接触{
名称:“能源部”,
}
q:=“更新联系人集名称=:名称,其中:昵称=”,昵称为null或昵称=:昵称”
db.NamedExec(db.Rebind(q),c)
}
只有当
c.Nickname
是字符串值时(假设数据库中有匹配的记录),上面的查询才会更新记录如何实现这种逻辑:如果
c.Nickname==nil
使用
Nickname为null
否则使用
Nickname=c.Nickname

编辑:


我尝试了这个查询
updatecontact SET name=:name WHERE CAST(:昵称为varchar)为null,昵称为null或昵称=:昵称
,它按照我的预期工作,但仍然想看看是否有更好的替代方案

你能解释一下你想要实现什么吗?您想为昵称为what的所有记录设置名称?这与sqlx或Go无关。您只需要正确的SQL查询。我相信您正在查找谓词。如果字符串不为NULL,则SQL.NullString has属性Valid为true。