You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现空messages列的JSON数组拼接更新,避免覆盖原有数据?

解决方案

可以使用COALESCE函数处理空值场景,将NULL的messages列转换为空JSON数组后再进行拼接,这样不管列原本是空还是已有消息,都能正确追加新内容,无需在代码层做判断:

UPDATE chats 
SET messages = COALESCE(messages, '[]'::json) || $1 
WHERE sender_id = $2 AND reciever_id = $3;

说明:

  • COALESCE(messages, '[]'::json):如果messages为NULL(空列),则返回空的JSON数组[];如果已有值,则返回原有的JSON数组。
  • ||操作符:PostgreSQL中支持用它来拼接JSON数组,将新的消息数组($1)追加到原有数组后面。
  • 注意:$1必须是JSON数组格式(比如[{"message":"新消息","sender":"xxx","reciever":"xxx"}]),不能是单个JSON对象,否则拼接会导致格式错误。

内容的提问来源于stack exchange,提问作者Muathcs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:35:25