在嵌套JSON中搜索和替换键的值

omqzjyyz  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(119)

我有一个json列与此格式和如何修改元素从postgres jsonb的关键?

{
  "Content": {
    "CustomerInfo": {
    },
    "Identifier": null,
    "Operating": {
      "Identifier": "ABC-8585",
      "TypeIdentifier": "VAL_OP",
      "SaleIdentifier": "01000042"
    },
  },
}

如何从标识符密钥中删除“ABC-”?
结果:

{
  "Content": {
    "CustomerInfo": {
    },
    "Identifier": null,
    "Operating": {
      "Identifier": "8585",
      "TypeIdentifier": "VAL_OP",
      "SaleIdentifier": "01000042"
    },
  },
}

下面是我用来更新json值的查询,但它不起作用。

update "tbleName" set "columnName" = replace('Content.Operating.Identifier','ABC-','')::jsonb ? 'Content.Operating.Identifier'
hpxqektj

hpxqektj1#

您可以通过使用jsonb_set、常规JSON阅读操作符和replace的组合来实现这一点:

UPDATE "tbleName"
set "columnName" = jsonb_set(
  "columnName"::jsonb,
  '{Content,Operating,Identifier}', 
  replace(("columnName"::jsonb -> 'Content' -> 'Operating' -> 'Identifier')::text, 'ABC-', '')::jsonb
);

在这里,您可以按以下方式计算列的新值:
1.读取所需嵌套JSON关键字的值
1.进行替换
1.将结果写回原始JSON结构中的同一嵌套JSON键

相关问题