簡體   English   中英

PostgreSQL - 更新內部 json

[英]PostgreSQL - Update inner json

我有一個列jdata類型的jsonb表“的JTable”里面。 示例jdata如下所示:

{
 "id" : 12,
 "address" : {
     "houseName": {
        "name" : "Jackson",
         "lang" : "ENG"
     } 
  } 
}

我如何查詢以為此將lang更新為anotherValue

我試過這個,它似乎不起作用:

UPDATE JTABLE SET jdata -> 'address'->'houseName'-> 'lang' = '"DEU"' where jdata->>'id' = '12';

這不起作用! 有什么幫助嗎?

編輯:

這覆蓋了我的價值,當我運行時我得到了這個:

{
 "id" : 12,
 "address" : {
     "houseName": {
         "lang" : "DEU"
     } 
  } 
}

我丟失了密鑰name

我現在正在嘗試這個查詢:

SELECT jsonb_set(jdata, 'address,houseName}', '{"lang":"DEU"}'::jsonb) FROM JTABLE where jdata->>'id' = '12';

您的路徑錯誤,第二條語句應該是您要更新的json key的路徑。

查看更新的查詢應如下所示:

SELECT jsonb_set(jdata, '{address,houseName,lang}', '"DEU"') FROM JTABLE where jdata->'id' = '12';

要更新的最終查詢:

UPDATE JTABLE SET jdata = jsonb_set(jdata, '{address,houseName,lang}', '"DEU"') WHERE jdata->'id' = '12';

也不要將record類型轉換為`jsonb。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM