2017-07-07 34 views
2

我使用的是Postgres 9.6和我有一些行具有NULL值和一些有字典值像{"notify": false}一个JSONB列。如何使用`jsonb_set`与空列值

我希望有更多的字典键/值对更新的列值。

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

如果我已经有像{"notify": false}这样的值的情况下工作。最终的结果变得如预期{"alerts": false, "notifications": false}

但我想更新我们NULL的价值,没有什么是数据库更新。

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

+0

你尝试'jsonb_set(合并(通知, '{}'),“{”警报“}”,“假”) –

回答

4

使用coalesce()

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

或更简单:

UPDATE accounts 
SET notifications = coalesce(notifications, '{}') || '{"alerts": false}' 
相关问题