【问题标题】:Update field values that is inside a json document IN db2更新 db2 中 json 文档中的字段值
【发布时间】: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 中任何类型的字段值。

【问题讨论】:

标签: sql json db2 db2-luw


【解决方案1】:

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

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

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

【讨论】:

  • 您好 Henrik,感谢您的回答。尝试使用您的解决方案。但它不起作用。字段未更新。
猜你喜欢
  • 2020-10-23
  • 2020-02-26
  • 1970-01-01
  • 2011-02-06
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多