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

2024-04-06

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

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

当已经有一些现有元数据时,一切正常。 然而,当前一个值是NULL然后更新不起作用。这metadata更新后依然是NULL.

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


添加合并:

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

它的工作原理与普通字符串类似NULL || something始终为 NULL

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL 9.5 - 将 NULL 与 JSON 合并时更新不起作用 的相关文章

随机推荐