微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL 9.5 – 将NULL与JSON合并时更新不起作用

我的users表包含json类型的元数据列.
现在,我想在保留现有值的同时向用户添加新元数据.
所以我正在使用||运算符合并2个 JSON对象:

UPDATE users
SET Metadata = Metadata::jsonb || '{"test": true}'::jsonb
WHERE id=...
RETURNING *;

当已经存在一些现有元数据时,一切正常.
但是,当前一个值为NULL时,更新不起作用.更新后的元数据仍为NULL.

如何改进我的查询,以便在前一个值为NULL时设置新的JSON对象,或者合并前一个值和新值?

解决方法

添加合并:

UPDATE users
SET Metadata = coalesce(Metadata::jsonb,'{}'::jsonb) || '{"test": true}'::jsonb
WHERE id=...
RETURNING *;

它与普通字符串NULL ||的工作方式类似某事永远是NULL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐