jsonb_set在过程中传递变量值而不是静态

时间:2017-11-27 05:39:52

标签: database postgresql stored-procedures jsonb

enter image description here需要帮助让jsob_set在PostgreSQL程序下工作, 从子表中获取记录并更新父表的json字段值。 将所选值分配给变量并将其添加到值下的jsonb_set, 例如

  

jsonb_set(jsonFieldOfDb,' {json_Column}',jsonVariable,TRUE);

其中jsonVariable是我从第二个表中选择的值。 有关详细信息,请查看附带的屏幕截图。

2 个答案:

答案 0 :(得分:2)

你可能需要施展路径& jsonVariabletext[]jsonb

jsonb_set(jsonFieldOfDb,'{json_Column}'::text[],jsonVariable::jsonb,true)

如果您的jsonVariable只是一个普通字符串,您可能还需要引用它们

jsonb_set(jsonFieldOfDb,'{json_Column}'::text[],('"' || jsonVariable || '"')::jsonb, true)

答案 1 :(得分:0)

添加到Yurui的答案中,如果您想设置字符串以外的动态值,则可以使用to_jsonb函数将动态变量转换为jsonb:

UPDATE event AS e 
SET source_json = jsonb_set(source_json, '{consumerId}'::text[], to_jsonb(p.promoter_id)) 
FROM promoter AS p 
WHERE e.id = p.event_id and p.app_id in ('123');