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

标签 json postgresql jsonb postgresql-9.6

我使用的是 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/

相关文章:

postgresql - 使用 PostgreSQL 9.4 计算 JSONB 数组长度

json - 在 Pig 中解析复杂的嵌套 JSON

java - 如何将类中的静态变量转换为json

mysql - PG 缺少表的 FROM 子句条目

postgresql - 重启 vm 后无法访问数据库

sql - 在 PostgreSQL 中使用 NULL 值更新 JSONB 列

php - 在引导模式中将 ajax 成功数据显示为数据表

json - 在 swift 中通过 JSON 获取可为空的 bool 值。转换任何对象?到 bool

sql - 通用集合返回函数

sql - 将 JSON 数据提取到简单的列中