如何在具有空值的列上使用`jsonb_set`

问题描述 投票:7回答:1

我使用的是Postgres 9.6,我有一个JSONB列,其中一些行有NULL值,有些行有像{"notify": false}这样的dict值。

我想用更多的字典键/值对更新列值。

UPDATE accounts SET notifications =  jsonb_set(notifications, '{"alerts"}', 'false');

适用于我已经拥有像{"notify": false}这样的值的情况。最终结果变得如预期的那样{"alerts": false, "notifications": false}

但我试图更新我们NULL的价值,数据库中没有任何更新。

你能否告诉我如何更新NULL值,所以最终结果将是像{"notify": false}这样的值。最终结果变得如预期的那样{"alerts": false}

json postgresql jsonb postgresql-9.6
1个回答
11
投票

使用coalesce()

UPDATE accounts 
SET notifications =  jsonb_set(coalesce(notifications, '{}'), '{"alerts"}', 'false')

甚至更简单:

UPDATE accounts 
SET notifications =  coalesce(notifications, '{}') || '{"alerts": false}'
© www.soinside.com 2019 - 2024. All rights reserved.