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(使用前将#替换为@)