[英]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.