我使用的是 Postgres 9.6,我有一个 JSONB 列,其中一些行具有 NULL
值,一些行具有字典值,如 {"notify": false}
。
我想用更多字典键/值对更新列值。
UPDATE accounts SET notifications = jsonb_set(notifications, '{"alerts"}', 'false');
在我已经拥有像 {"notify": false}
这样的值的情况下有效。最终结果变成了预期的 {"alerts": false, "notifications": false}
。
但是我试图更新我们的值 NULL
,数据库中没有任何更新。
你能告诉我如何更新 NULL
值吗,所以它们的最终结果将是像 {"notify": false}
这样的值.最终结果如预期的那样 {"alerts": false}
最佳答案
使用coalesce()
:
UPDATE accounts
SET notifications = jsonb_set(coalesce(notifications, '{}'), '{"alerts"}', 'false')
或者更简单:
UPDATE accounts
SET notifications = coalesce(notifications, '{}') || '{"alerts": false}'
关于json - 如何在具有空值的列上使用 `jsonb_set`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971694/