PostgreSQL-更新内部json
我在表“JTABLE”中有一个类型为PostgreSQL-更新内部json,sql,postgresql,jsonb,Sql,Postgresql,Jsonb,我在表“JTABLE”中有一个类型为jsonb的列jdata。示例jdata如下所示: { "id" : 12, "address" : { "houseName": { "name" : "Jackson", "lang" : "ENG" } } } 如何查询以将此的lang更新为另一个值 我试过这个,但似乎不起作用: 更新JTABLE SET jdata->'address'->'houseName'->'lang'='D
jsonb
的列jdata
。示例jdata
如下所示:
{
"id" : 12,
"address" : {
"houseName": {
"name" : "Jackson",
"lang" : "ENG"
}
}
}
如何查询以将此的lang
更新为另一个值
我试过这个,但似乎不起作用:
更新JTABLE SET jdata->'address'->'houseName'->'lang'='DEU',其中jdata->'id'='12'代码>
这不行!有什么帮助吗
编辑:
这将覆盖我的值,我在运行时得到:
{
"id" : 12,
"address" : {
"houseName": {
"lang" : "DEU"
}
}
}
我丢失了钥匙名称
我正在尝试此查询:
从JTABLE中选择jsonb_集(jdata,'address,houseName}','{lang:“DEU”}'::jsonb),其中jdata->'id'='12'
您的路径错误,第二条语句应该是要更新的json键的路径
查看更新的查询应如下所示:
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';
另外,不要将记录强制转换为`jsonb.您的路径错误,第二条语句应该是您希望更新的json键的路径
查看更新的查询应如下所示:
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';
也不要将一个记录
输入到'jsonb.“不起作用”是一个无用的短语;请仅对您预期发生的事情与实际发生的事情进行准确、详细的描述。假设你在帮助台工作,你的一个用户打电话说“我的电脑坏了”-怎么了?jsonb\u set
function:@CaiusJard对不起,我是个新手,我真的需要帮助来更新补丁。这也给了我一个演员例外“不工作”是一个无用的短语,所以;请仅对您预期发生的事情与实际发生的事情进行准确、详细的描述。假设你在帮助台工作,你的一个用户打电话说“我的电脑坏了”-怎么了?jsonb\u set
function:@CaiusJard对不起,我是个新手,我真的需要帮助来更新补丁。这也给我带来了一个演员例外!我后来明白了!谢谢你是的!我后来明白了!非常感谢。