如何更新jsonb列并放置文本数组

时间:2017-12-03 14:43:51

标签: arrays json postgresql

我有像这样的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

1 个答案:

答案 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