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

SQL批量更新多行时NULL值类型不匹配报错排查

解决PostgreSQL批量更新时的类型不匹配错误

问题原因

PostgreSQL解析VALUES子句时会自动推断列的数据类型,当你在VALUES中使用null且未明确指定类型时,数据库会将该列推断为text类型,而目标表的suggestion字段是可空integer类型,因此触发类型不匹配错误。

解决方案

方法1:给null明确指定整数类型

修改VALUES子句中的null为NULL::integer,强制指定其类型为整数:

UPDATE shipment_item AS ass
SET units_per_box = av.units_per_box,
    boxes = av.boxes,
    box_per_pallet = av.box_per_pallet,
    suggestion = av.suggestion
FROM (VALUES  (20091,36,2,44,NULL::integer)  ) AS av
(id,units_per_box,boxes,
 box_per_pallet,suggestion)

方法2:在定义临时表av时指定列类型

声明av的列时,明确指定suggestion为integer类型:

UPDATE shipment_item AS ass
SET units_per_box = av.units_per_box,
    boxes = av.boxes,
    box_per_pallet = av.box_per_pallet,
    suggestion = av.suggestion
FROM (VALUES  (20091,36,2,44,null)  ) AS av
(id integer, units_per_box integer, boxes integer,
 box_per_pallet integer, suggestion integer)

两种方法都能让数据库正确识别suggestion列的类型,消除类型不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:15:21