我有像这样的jsonb专栏:
{name: "Toby", occupation: "Software Engineer", interests: ""}
现在,我需要更新行并将['Volleyball', 'Football', 'Swim']
之类的文本数组放入interests
字段。
到目前为止我尝试过的事情:
UPDATE users SET data = jsonb_set(data, '{interests}', ARRAY['Volleyball', 'Football', 'Swim'], true) WHERE id=84;
data
是jsonb列
但它返回错误:
错误:函数jsonb_set(jsonb,unknown,integer [],boolean)没有 存在
提示:没有函数匹配给定的名称和参数类型。您 可能需要添加显式类型转换。
P.S:
我正在使用PostgreSQL 10
答案 0 :(得分:1)
第三个参数也必须是JSONB类型。
UPDATE users SET data = jsonb_set(data, '{interests}', '["Volleyball", "Football", "Swim"]'::jsonb, true) WHERE id=84;
这也可以使用ARRAY
:
UPDATE users SET data = jsonb_set(data, '{interests}', to_jsonb(array['Volleyball', 'Football', 'Swim']), true) WHERE id=84