postgresql 如何更新jsonb列的内部值?

fnvucqvd  于 2023-03-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(202)

例如,我需要为包含classifiedId = 665的条目更新bok.name(从life book更新为new name)。我该怎么做?
这是一个名为external_idsjsonb列的示例:

{
  "book": {
    "id": "1223",
    "name": "life book"
  },
  "keyId": "662123",
  "classifiedId": "665"
}
o2rvlv0m

o2rvlv0m1#

您可以使用jsonb_set(target jsonb, path text[], new_value jsonb [, create_missing boolean])在jsonb列内部进行更新。

UPDATE test 
SET external_ids = jsonb_set(external_ids, '{book,name}', '"new name"', false) 
WHERE external_ids::jsonb->>'classifiedId'='665';

作为第二个参数提供的路径指示集合中要查找更新点的键,第三个参数是要插入到给定路径的值,格式为jsonb。

相关问题