首页 > 解决方案 > 如何将自定义对象附加到 postgres 中的 JSONB 列类型

问题描述

我需要更新一个包含 data 的 jsonb 列{"X":true}。我需要附加该类型的复杂对象,{"obj":{"a":1,"b":2}}以便该列的行的最终值{"x":true,"obj":{"a":1,"b":2}}。更新此行的查询将是什么。

postgres 版本 12

update tableName set columnName = (select '{"obj":{"a":1,"b":2}}'::jsonb || columnName::jsonb) where ...更新 -当存在值时,以下查询成功返回,但当列为空时,在运行更新查询后仍保持为空。{"obj":{"a":1,"b":2}}即使列为 null ,我也需要能够添加。

标签: sqljsonpostgresqlsql-update

解决方案


您可以使用连接运算符

'{"X":true}'::jsonb || '{"obj":{"a":1,"b":2}}'::jsonb

如果要更新现有列,请使用coalesce()处理 NULL 值:

update the_table
  set the_column = coalesce(the_column, '{}')||'{"obj":{"a":1,"b":2}}'

在线示例


推荐阅读