更新 db2 中 json 文档中的字段值

Posted

技术标签:

【中文标题】更新 db2 中 json 文档中的字段值【英文标题】:Update field values that is inside a json document IN db2 【发布时间】:2020-10-22 08:08:27 【问题描述】:

“标识符”:“108”, “名称”:“健康诊所”, “语言支持”:[ “英语语言”, “选择”:假 , “语言”:“西班牙语”, “选择”:真 ], "defaultLanguage": "西班牙语"

我可以使用以下查询更新 json 对象。

UPDATE JSONTABLE SET
JSONCOL=SYSTOOLS.JSON_UPDATE(JSONCOL,
         ' $set: "name":"AMC HEALTH CLINIC"') WHERE DELETE_FLAG='N';

现在我想更改以下节点“支持的语言”中的数据。 代替“法语”,我想更新“西班牙语”。下面的查询我用来更新。但我没能 获取更新的数据。

UPDATE JSONTABLE SET
JSONCOL=SYSTOOLS.JSON_UPDATE(JSONCOL,
      ' $set: "Language.1":"French"') WHERE DELETE_FLAG='N';

我也尝试了以下查询。

UPDATE JSONTABLE SET
JSONCOL=SYSTOOLS.JSON_UPDATE(JSONCOL,
' $set: "languageSupported.Language.1":"French"') WHERE DELETE_FLAG='N';

输出应该是这样的: 语言支持”:[ “英语语言”, “选择”:假 , “语言”:“西班牙语”, “选择”:真

谁能帮助我了解如何在 db2 luw 中更新节点内的数据。我们是否有可能更新 json 中任何类型的字段值。

【问题讨论】:

您的 UPDATE 语句之后的 JSON 文档是什么?该字段是否已更新或在文档中添加了新字段? ibm.com/support/knowledgecenter/SSEPGG_11.5.0/… 【参考方案1】:

我没有测试过,但我猜是这样的查询:

UPDATE JSONTABLE SET
JSONCOL=SYSTOOLS.JSON_UPDATE(JSONCOL,
' $set: "languageSupported.1.Language":"French"') WHERE DELETE_FLAG='N';

languageSupported 位于路径的顶部,然后您需要选择数组中的第二个元素(“1”),然后是 Language 键。 p>

【讨论】:

您好 Henrik,感谢您的回答。尝试使用您的解决方案。但它不起作用。字段未更新。

以上是关于更新 db2 中 json 文档中的字段值的主要内容,如果未能解决你的问题,请参考以下文章

MongoDb:如何根据每个字段的值更新多个文档中的字段值?

如何根据旧值更新 rethinkdb 文档中的字段

Mongodb,使用选定的文档值使用单个操作更新同一文档中的字段

pymongo 用它的子字符串值更新字段集合中的所有文档

如何从 Db2 中的十进制字段中获取无效值列表?

MongoDB update集合字段名修改 $rename