Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL-更新内部json_Sql_Postgresql_Jsonb - Fatal编程技术网

PostgreSQL-更新内部json

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

我在表“JTABLE”中有一个类型为
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对不起,我是个新手,我真的需要帮助来更新补丁。这也给我带来了一个演员例外!我后来明白了!谢谢你是的!我后来明白了!非常感谢。