使用另一个表更新JSONB对象

问题描述

我试图用另一个表中的数据更新一个表中的JSONB字段。例如,

update ms
set data = data || '{"COMMERCIAL": 3.4,"PCT" : medi_percent}'
from mix
where mix.id = mss.data_id
and data_id = 6000
and set_id = 20

这给我以下错误-

Invalid input Syntax for type json
DETAIL:  Token "medi_percent" is invalid.

medi_percent更改为数字时,不会出现此错误

解决方法

{"COMMERCIAL": 3.4,"PCT" : medi_percent}不是有效的JSON文本。请注意,这里没有发生字符串内插。您可能正在寻找

json_build_object('COMMERCIAL',3.4,'PCT',medi_percent)

现在medi_percent现在是表达式(大概会引用您的mix列)。