Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
Sql 我有一个名为records的表,它的jsonb类型的数据列包含以下详细信息。我正在使用postgres 9.5_Sql_Postgresql_Jsonb_Postgresql 9.5 - Fatal编程技术网

Sql 我有一个名为records的表,它的jsonb类型的数据列包含以下详细信息。我正在使用postgres 9.5

Sql 我有一个名为records的表,它的jsonb类型的数据列包含以下详细信息。我正在使用postgres 9.5,sql,postgresql,jsonb,postgresql-9.5,Sql,Postgresql,Jsonb,Postgresql 9.5,我想将位置更新为地址。如下 { "propertyDetail": { "Plot NO": "11", "Society Name": "Trinity" }, "personalDetail": { "Name": "Allen", "Location": "M

我想将位置更新为地址。如下

{
  "propertyDetail": {
    "Plot NO": "11",
    "Society Name": "Trinity"
  },
  "personalDetail": {
    "Name": "Allen",
    "Location": "Mumbai",
    "emal": "abc@gmail.com"
  }
}

我认为没有比添加新的(使用
jsonb_set
)和删除旧的(使用
-
)更好的方法了:

''' 更新记录集数据=replace(数据::text,“'Location”“,“'Address”“)::jsonb;
''

我正在迁移一个旧数据库,或者我必须将位置更新为位置或地址。由于前端的逻辑是全部开发的,我无法删除和添加新的,因为我正在迁移超过30万条记录的数据。这就是我想要更新的原因。没有理由不能对3个10万条记录进行更新。感谢您的响应,我找到了解决方案更新记录集data=replace(data::text,“‘Location’,“‘Address’”)::jsonb;如果
“Location”
在其他上下文中出现,比如作为值而不是键出现,那么这将导致混乱。
{
  "propertyDetail": {
    "Plot NO": "11",
    "Society Name": "Trinity"
  },
  "personalDetail": {
    "Name": "Allen",
    "Address": "Mumbai",
    "emal": "abc@gmail.com"
  }
}
update thetable set x= 
    jsonb_set(x,'{personalDetail,Address}',x#>'{personalDetail,Location}')
    #-'{personalDetail,Location}'