【发布时间】:2020-03-09 14:32:05
【问题描述】:
我在 cockroachdb 中有如下表格:
key | value
+-------------------+---------------------------------------------------------+
<host_ipa> | {“student_name": “John", “degree": “Bachelors”, “university”: “KU”, “Company”: “ABC"}
现在我只想更新 jsonb - degree 和 university 的两个键。我该怎么做?
我有一个解决方案,但需要提供所有四个字段。
这是我在 golang 中的内容:
sqlCmd := fmt.Sprintf(" UPDATE %v set value = json_object('{%v, %v, %v, %v}'::string[], '{%v, %v, %v, %v}'::string[]) WHERE key = '%v' ",
myTable,
strconv.Quote("student_name”),
strconv.Quote("degree"),
strconv.Quote(“university”),
strconv.Quote("Company"),
strconv.Quote(student),
strconv.Quote(newDegree),
strconv.Quote(newUniversity),
strconv.Quote(company),
host)
db, err := sql.Open(dbDriver, DBConnStr)
_, err = db.Exec(sqlCmd)
基于@Bergi 的工作解决方案:
db, err := sql.Open(dbDriver, DBConnStr)
sqlCmd := "UPDATE " + myTable + " SET value = value || jsonb_build_object(‘degree', $1::string, ‘university', $2::string) WHERE key = $3"
_, err = db.Exec(sqlCmd, newDegree, newUniversity, host)
【问题讨论】:
-
我假设您的实际代码没有引号问题(
‘vs'、“vs")?
标签: go jsonb cockroachdb