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

如何在PostgreSQL中仅更新为NULL的指定字段?

PostgreSQL 仅更新NULL字段的解决方案

你可以用PostgreSQL的COALESCE函数实现需求——它会返回传入参数里第一个非NULL的值。修改后的UPDATE语句如下:

UPDATE public.people
SET 
    flag = COALESCE(flag, $flag),
    name = COALESCE(name, $name),
    surname = COALESCE(surname, $surname)
WHERE id_dt = $id_dt;

原理说明:

  • COALESCE(flag, $flag):如果当前行的flag字段不为NULL,就保留原有值;只有当flag是NULL时,才用$flag的新值更新。
  • name和surname字段遵循同样逻辑,不会覆盖已有的非NULL数据。

如果你的参数$flag、$name本身可能为NULL(且这种情况下你不想写入NULL),可以用CASE语句实现更严谨的判断:

UPDATE public.people
SET 
    flag = CASE WHEN flag IS NULL THEN $flag ELSE flag END,
    name = CASE WHEN name IS NULL THEN $name ELSE name END,
    surname = CASE WHEN surname IS NULL THEN $surname ELSE surname END
WHERE id_dt = $id_dt;

两种方法都能达成“仅更新NULL字段、不覆盖已有数据”的效果,COALESCE写法更简洁,优先推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:34:54