提问者:小点点

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


我有如下jsonb专栏:

{name: "Toby", occupation: "Software Engineer", interests: ""}

现在,我需要更新行,并将类似['排球‘,'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)不存在

提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

附注:

我正在使用PostgreSQL 10


共1个答案

匿名用户

第三个参数也需要是JSONB类型的。

UPDATE users SET data = jsonb_set(data, '{interests}', '["Volleyball", "Football", "Swim"]'::jsonb, true) WHERE id=84;

这也会起作用,这与您使用数组的示例稍微接近一点:

UPDATE users SET data = jsonb_set(data, '{interests}', to_jsonb(array['Volleyball', 'Football', 'Swim']), true) WHERE id=84