当前位置: 首页 > 知识库问答 >
问题:

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

严扬
2023-03-14

我有如下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个答案

罗源
2023-03-14

第三个参数也需要是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
 类似资料:
  • 我正在节点中使用knex。PostgreSQL数据库上的js项目。将使用knex.schema。raw(原始SQL)来实现这一点。 我需要更新jsonb列中json对象的“grades”数组中等级名称(“1st”等)的所有实例。“grades”是整个json对象中的一个值,这是一个教训。 数组当前包含类似于“grades”的内容:[“Pre-K”,“K”,“4th”,“5th”,“6th”,“7t

  • 问题内容: 我怎样才能把所有我从一个文本文件读入的元素使用 流 ,其中monitoredData类有这些3个私有变量:; 文本文件Activities.txt如下所示: 等等.... 前2个字符串由一个空格分隔,然后是2个制表符,再一个空格是2个制表符。 问题答案: 您需要引入一个工厂来创建,例如,我正在使用a 来创建from : 然后, 您的代码在流上进行操作应如下所示,并且您不需要使用Coll

  • 问题内容: 因此,如标题所示,即时消息开始学习一些python,而即时消息处理则难以掌握。我需要完成的工作是读一些数字并将它们存储在列表中。文本文件如下所示: 基本上,这些是用于python的海龟制作形状的坐标和方向。我要讲的是,唯一的问题是使它们采用正确的格式。因此,我无法确定的是如何将这些数字从文件中提取到 A列表中,每个四个坐标是一个大列表中的一个列表。 这是我的尝试,但正如我所说,我需要一

  • 我读过其他一些类似于此的问题,但都使用了imports和extras,除了importjava.io.*之外,我不想使用任何imports;也没有任何名单。另外,这个is方法中的for循环是我在搞乱它,因为我无法弄清楚它。 }public static void main(string[]args)抛出IOException,FileNotFoundException{int[]array=pro

  • 我有一个带有jsonb列的PostgreSQL表,其中包含一个字符串数组,这些字符串是标记值,如下所示:。我有一个自定义绑定,用于将JSON与jackson JSONode进行转换。 自定义绑定定义如下:https://gist.github.com/helgeg/0C0B14228F75E91B7542BD6979A05B49 用基本的find读取记录,然后我提取JSON列,如下所示: 这是使用

  • 如何更新JSONB以将新键添加到所有记录的嵌套数组(用于数组的所有项目)中。 我指的是表结构的链接: 给定的json是: 要将新元素添加到每个数组项中,请执行以下查询: 执行上述查询后输出: 但是上面只会在id=1的地方更新json。对于orders中的所有行,需要进行哪些更改才能更新与上述相同的JSON?